• [问题求助] c#实例 连接不上
    c#实例 连接不上不上
  • [新手课堂] C#学习:基础
    Namespace这玩意就是用来方便管理的,而且在计算机中相同的设计思想到处可见,比如同一个文件夹下不同有同名的文件,你放在不同文件夹下可以有同名文件。其他编程语言比如Java有包路径,不同路径名字可以有同名的类。这种思想方便管理文件/代码。namespace first_space{   class namespace_cl   {   }//比如这样,程序是会报错的   class namespace_cl   {   }}//但是你是下面的状态就不会报错namespace first_space{   class namespace_cl   {   }}namespace second_space{   class namespace_cl   { }}到这有的人就开始有疑问了:如果是不同的文件或者想访问其他的空间怎么办呢?细心的已经发现了,就和Java的导包一样,C#使用using导入空间,在每个编程文件的最上面几行都是这样的引入,想要哪些空间的功能导入哪个。这时候又有人有疑问了,能不能修仙小说那样天外有天,天上还有天。能不能命名空间套命名空间,套套套,此处禁止套娃。答案是可以的,引入的时候:using namespaceone.namespacetwo 用英文符号.即可,跟Java包路径同理。预处理器从字面理解就是提前对信息进行处理。她确实也是这样的,她会根据你指定的条件,只编译满足条件的代码,不满足条件的代码不编译。既区分了软件版本,代码还在一块,管理方便。预处理指令是#开始的,且只能作为开头,一般指令单独占一行。都有哪些指令在这就不单独写了。在Unity中指令挺有用的,因为PC是键盘,Android事件是手势,用预处理提前写好不同端的不同实现代码(当然她们功能可能是一致的),打包发布的时候利人利己。异常哎呀,这个老四件套了:try、catch、finally 和 throwtry: 一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。catch: 程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。finally: finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。throw: 当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。反射通俗的讲就是可以访问一个类的所有属性和方法,且能够调用。有人提问了:随便写的public类不都是能任意访问调用的吗,这有什么区别?区别在于一个是正常写代码,你知道代码逻辑和内容,且都在你的掌控之内,当然能访问;而反射不同她能够访问你不清楚的类,比如三方框架你遇到这个框架里某个类某个方法没有对外开放,而你又需要使用,就可以用反射把她抛出来。优点:反射提高了程序的灵活性和扩展性。降低耦合性,提高自适应能力。它允许程序创建和控制任何类的对象,无需提前硬编码目标类。缺点:性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。因此反射机制主要应用在对灵活性和拓展性要求很高的系统框架上,普通程序不建议使用。使用反射会模糊程序内部逻辑;程序员希望在源代码中看到程序的逻辑,反射却绕过了源代码的技术,因而会带来维护的问题,反射代码比相应的直接代码更复杂。属性总结一句话,和Java里实体的get/set方法一样的性质。委托使用关键字delegate来修饰,必须用new关键字来创建,且与某个特定方法关联。比较官方的说法:表示对具有特定参数列表和返回类型的方法的引用。通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。 委托还类似于其他一些语言中存在的“函数指针”概念。 与函数指针不同,委托是面向对象且类型安全的。按照自己的理解:委托就是包一个外壳,操作外壳就是调用壳内的内容。就好像老板让你板砖,你委托给另一个人让她板砖。这就是委托。委托中还能通过加减号来实现多个,称之为多播。只有相同类型的委托可以合并。使用场景:因刚需C#没什么实际经验,大家知道有什么好的实际应用环境吗委托示例://这个是声明个委托    delegate int NumberChanger(int n);    static int num = 10;    public static int AddNum(int p)    {        num += p;        return num;    }    public static int MultNum(int q)    {        num *= q;        return num;    }    static void Main(string[] args)    {        // 创建委托实例        NumberChanger nc;        NumberChanger nc1 = new NumberChanger(AddNum);        NumberChanger nc2 = new NumberChanger(MultNum);        // 使用委托对象调用方法        nc1(25);        Console.WriteLine("Value of Num: {0}", num);        nc2(5);        Console.WriteLine("Value of Num: {0}", num);        //下面是组播 使用  +或- 符号操作        nc = nc1;        nc += nc2;        // 调用多播        nc(5);        Console.WriteLine("Value of Num: {0}", num);        Console.ReadKey();       //输出结果为:            //Value of Num: 35            //Value of Num: 175            //Value of Num: 75}
  • [技术干货] 树莓派C#做接近开关传感器试验
    试验准备:1、树莓派3B,接近开关一个,发光三极管一个。2、安装了Windows IoT 系统,Windows 10 + Visual Studio 2022开发环境接线图试验要完成的任务:当接近开关靠近金属物体时,主动通知,亮起三极管的灯。当接近开关远离金属物,随即三极管熄灭。1、创建一个类ProximitySwitch,用来实现对接近开关引脚监听,引脚电平变化时做出反应,这里用一个回调方法实现。定义一个GpioPin的控制监听对象。一个回调方法。 /// <summary> /// 监听控制 /// </summary> private GpioPin _ListenPin; /// <summary> /// 监听结果回调 /// </summary> private Action<GpioPinValue> _PinValueChanged;初始化接近开关的引脚对象,并设定回调方法 /// <summary> /// 初始化引脚 /// </summary> /// <param name="pin">引脚编号</param> /// <param name="mode">工作模式</param> /// <param name="value">初始值</param> void Init(int pin, GpioPinDriveMode mode, GpioPinValue value) { var gpio = GpioController.GetDefault(); _ListenPin = gpio.OpenPin(pin); _ListenPin.SetDriveMode(mode); _ListenPin.Write(value); _ListenPin.ValueChanged += Pin_ValueChanged; } private void Pin_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs args) { _PinValueChanged(sender.Read()); }2、再创建一个控制引脚输出的类PinSetting,类负责初始化一个引脚,并提供写入高低电平 public class PinSetting { GpioPin _Pin; public PinSetting(int pin) { var gpio = GpioController.GetDefault(); _Pin = gpio.OpenPin(pin); _Pin.SetDriveMode(GpioPinDriveMode.Output); } /// <summary> /// 执行写入 /// </summary> /// <param name="value"></param> public void WritePin(GpioPinValue value) { _Pin.Write(value); } }3、测试一下,这里是通过一个uwp点page上button出发 PinSetting pin; ProximitySwitch proximity; private async void Button_Click(object sender, RoutedEventArgs e) { pin = new PinSetting(27); proximity = new ProximitySwitch(6); proximity.StartListen(v => { pin.WritePin(v);//通过监听结果回调触发 }); }最终效果
  • [新手课堂] C#学习:基础
    Namespace这玩意就是用来方便管理的,而且在计算机中相同的设计思想到处可见,比如同一个文件夹下不同有同名的文件,你放在不同文件夹下可以有同名文件。其他编程语言比如Java有包路径,不同路径名字可以有同名的类。这种思想方便管理文件/代码。namespace first_space{   class namespace_cl   {   }//比如这样,程序是会报错的   class namespace_cl   {   }}//但是你是下面的状态就不会报错namespace first_space{   class namespace_cl   {   }}namespace second_space{   class namespace_cl   { }}到这有的人就开始有疑问了:如果是不同的文件或者想访问其他的空间怎么办呢?细心的已经发现了,就和Java的导包一样,C#使用using导入空间,在每个编程文件的最上面几行都是这样的引入,想要哪些空间的功能导入哪个。这时候又有人有疑问了,能不能修仙小说那样天外有天,天上还有天。能不能命名空间套命名空间,套套套,此处禁止套娃。答案是可以的,引入的时候:using namespaceone.namespacetwo 用英文符号.即可,跟Java包路径同理。预处理器从字面理解就是提前对信息进行处理。她确实也是这样的,她会根据你指定的条件,只编译满足条件的代码,不满足条件的代码不编译。既区分了软件版本,代码还在一块,管理方便。预处理指令是#开始的,且只能作为开头,一般指令单独占一行。都有哪些指令在这就不单独写了。在Unity中指令挺有用的,因为PC是键盘,Android事件是手势,用预处理提前写好不同端的不同实现代码(当然她们功能可能是一致的),打包发布的时候利人利己。异常哎呀,这个老四件套了:try、catch、finally 和 throwtry: 一个 try 块标识了一个将被激活的特定的异常的代码块。后跟一个或多个 catch 块。catch: 程序通过异常处理程序捕获异常。catch 关键字表示异常的捕获。finally: finally 块用于执行给定的语句,不管异常是否被抛出都会执行。例如,如果您打开一个文件,不管是否出现异常文件都要被关闭。throw: 当问题出现时,程序抛出一个异常。使用 throw 关键字来完成。反射通俗的讲就是可以访问一个类的所有属性和方法,且能够调用。有人提问了:随便写的public类不都是能任意访问调用的吗,这有什么区别?区别在于一个是正常写代码,你知道代码逻辑和内容,且都在你的掌控之内,当然能访问;而反射不同她能够访问你不清楚的类,比如三方框架你遇到这个框架里某个类某个方法没有对外开放,而你又需要使用,就可以用反射把她抛出来。优点:反射提高了程序的灵活性和扩展性。降低耦合性,提高自适应能力。它允许程序创建和控制任何类的对象,无需提前硬编码目标类。缺点:性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。因此反射机制主要应用在对灵活性和拓展性要求很高的系统框架上,普通程序不建议使用。使用反射会模糊程序内部逻辑;程序员希望在源代码中看到程序的逻辑,反射却绕过了源代码的技术,因而会带来维护的问题,反射代码比相应的直接代码更复杂。属性总结一句话,和Java里实体的get/set方法一样的性质。委托使用关键字delegate来修饰,必须用new关键字来创建,且与某个特定方法关联。比较官方的说法:表示对具有特定参数列表和返回类型的方法的引用。通过委托,可以将方法视为可分配给变量并可作为参数传递的实体。 委托还类似于其他一些语言中存在的“函数指针”概念。 与函数指针不同,委托是面向对象且类型安全的。按照自己的理解:委托就是包一个外壳,操作外壳就是调用壳内的内容。就好像老板让你板砖,你委托给另一个人让她板砖。这就是委托。委托中还能通过加减号来实现多个,称之为多播。只有相同类型的委托可以合并。使用场景:因刚需C#没什么实际经验,大家知道有什么好的实际应用环境吗委托示例://这个是声明个委托    delegate int NumberChanger(int n);    static int num = 10;    public static int AddNum(int p)    {        num += p;        return num;    }    public static int MultNum(int q)    {        num *= q;        return num;    }    static void Main(string[] args)    {        // 创建委托实例        NumberChanger nc;        NumberChanger nc1 = new NumberChanger(AddNum);        NumberChanger nc2 = new NumberChanger(MultNum);        // 使用委托对象调用方法        nc1(25);        Console.WriteLine("Value of Num: {0}", num);        nc2(5);        Console.WriteLine("Value of Num: {0}", num);        //下面是组播 使用  +或- 符号操作        nc = nc1;        nc += nc2;        // 调用多播        nc(5);        Console.WriteLine("Value of Num: {0}", num);        Console.ReadKey();       //输出结果为:            //Value of Num: 35            //Value of Num: 175            //Value of Num: 75}
  • [问题求助] C# OBS net45 SDK 上传文件或者下载文件 报错 基础连接已经关闭: 发送时发生错误,请指教
    基础连接已经关闭: 发送时发生错误。
  • C#WebApi同一个接口同一个会话会调用多次,如何判断是否是会话重复请求
    C#WebApi同一个接口同一个会话会调用多次,如何判断是否是会话重复请求
  • [问题求助] C#系统迁移咨询
    我这边一个用C#语言编写系统,之前部署在阿里云的Windows上,现在想要迁移到华为云的鲲鹏上面,中间过程我这边的接口,之前使用的是阿里这边的接口,迁移过来,华为这边有对应的吧,有没有什么需要注意的事情?比如说有涉及到aliyun-net-sdk-core   1.5.10、wang.aliyun-net-sdk-dysmsapi 这些,迁移过来,有强相关的这种改动吗?
  • [技术干货] C#应用迁移鲲鹏实践分享
    一、.net core 3.1安装        参考链接:https://bbs.huaweicloud.com/forum/thread-75530-1-1.html。 感谢天府的兄弟!!1、安装依赖l  更新libstdc++.so.6(/usr/lib64目录下默认的libstdc++.so.6只包含GLIBC版本无法满足.NET Core SDK 3.1的运行。)        cd /usr/lib64mv libstdc++.so.6 libstdc++.so.6.bakwget https://obs-mirror-ftp4.obs.cn-north-4.myhuaweicloud.com/libstdc++.so.6l  安装ICU1)下载源码git clone https://gitee.com/penjun71/icu.gitgit checkout release-59-2 -b release592)编译安装cd icu4c/source/./configure --prefix=/usr/local/icumakemake install3)修改环境变量vi /etc/profileexport PATH=/usr/local/icu/bin:$PATHsource /etc/profile4)执行icuinfo 会出现部分so库无法找到问题。根据报错添加软链接或者把对应文件拷贝进去。常见问题:icuinfo: error while loading shared libraries: libicuuc.so.68: cannot open shared object file: No such file or directory解决方案:ln –s  xx/ libicuuc.so.68   /lib64/ libicuuc.so.682、安装.net core sdk   1)下载源码   wget https://download.visualstudio.microsoft.com/download/pr/8c39349a-23d0-46b0-8206-8b573a404709/b42fd441c1911acc90aaddaa58d7103f/dotnet-sdk-3.1.401-linux-arm64.tar.gz   2)解压到/usr/local/dotnet/   mkdir /usr/local/dotnet/   tar zxvf dotnet-sdk-3.1.401-linux-arm64.tar.gz -C /usr/local/dotnet   3)配置环境变量   vi /etc/profile   export PATH=/usr/local/icu/bin:/usr/local/dotnet:$PATH   source /etc/profile   4)查看版本   dotnet --version二、vs编译发布选择目标框架.net core,编译发布成linux-arm版本,执行dotnet xx.dll 即可在鲲鹏上运行。三、安装配置守护进程(Supervisor)将应用配置成进程,否则shell关闭应用会自动停止。安装Supervisoryum install python-setuptoolseasy_install supervisor配置Supervisormkdir /etc/supervisorecho_supervisord_conf > /etc/supervisor/supervisord.conf修改supervisord.conf文件在文件结尾[include]节点处把;[include];files = relative/directory/*.ini修改成[include]files=conf.d/*.conf   #设置配置文件路径创建目录conf.d,在目录下创建文件TeaWebServer.conf[program:TeaWebServer]command=dotnet TeaWebServer.dlldirectory=/root/dotnet/PublishOutput  # TeaWebServer.dll 所在位置路径autorestart=true  #进程意外终止是否自动重启stderr_logfile=/var/log/TestDotNetCoreWeb.err.log  #日志文件stdout_logfile=/var/log/TestDotNetCoreWeb.out.log   #日志文件user=rootstopsignal=INT[supervisord][supervisorctl]:wq 保存退出运行supervisord并查看进程是否生效supervisord -c  /etc/supervisor/supervisord.confps -ef | grep TeaWebServer常见问题:1、Error: Another program is already listening on a port that one of our HTTP servers is configured to  xxxx解决方法:#  find / -name supervisor.sock   /tmp/supervisor.sock#  unlink /tmp/supervisor.sock2、Error: .ini file does not include supervisord section这是因为配置文件中必须有[supervisord],[supervisorctl]有这两个基本模块,默认创建的配置文件中不包含。在配置文件中加上即可。
  • [问题求助] 【内容审核产品】[SDK功能】程序使用C#构建的如何调用 内容审核
    【功能模块】C# 写的后端,如何调用 内容审核【操作步骤&问题现象】1、SDK中没有C的版本,请问下程序使用C#构建的如何调用 “内容审核”2、【截图信息】
  • [问题求助] C#多线程调用OCR通用文字识别,操作超时
    【功能模块】C#多线程调用OCR通用文字识别,通过Token请求【操作步骤&问题现象】1、C#多线程调用API,连续执行到第四五十次的时候会抛异常,异常信息:操作超时。2、设置System.Net.ServicePointManager.DefaultConnectionLimit的值大于4之后,在GetResponse()的位置抛异常。异常信息远程服务器返回错误:(429)Too Many Requests。【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [问题求助] C# sdk在.net core环境下无法正确运行
    将原.net framework4.6.1文件及代码导入到.net core 3应用以后,无法获取token,具体在HWOcrClientToken.cs中GetHttpToken()函数无响应。请添加.net core sdk示例,否则应用无法在linux环境下部署,谢谢。另示例sdk在.net framework4.8下也无法正确运行。
  • [其他语言] C#类的应用系统如何做鲲鹏适配?
    很多企业都用了C#开发语言来开发。这种情况怎么做适配?鲲鹏不是不支持c#吗?该怎么整?
  • [问题求助] 求基于C#语言的eSDK API Demo
    ISV的系统是C#语言开发的,基于API方式与vcn对接。我们现在能下载到的API方式接口开发资料都是基于C++的,想问下有没有基于C#语言的eSDK API Demo可提供参考?
  • [其他语言] c#函数式编程
    #化鲲为鹏,我有话说#从学习编程开始,就只知道面向对象编程,什么java,c++,老师也都苦口婆心的将面向对象的重要性。固然,面向对象,让学习编程更加简单,因为我们只需要知道一个实例调用哪些方法就行了。但也是因为这样,我们对程序运行过程中的数据变化,状态变化,都很模糊或者不关心。如果使用函数式编程,就不一样了。有兴趣的可以了解一下,可以帮助我们写出优雅简洁的代码。比如c#中的linq。
  • [版务处理] SDK V200R002C00SPC617 C# Demo匹配SDK V200R002C00SPC616版本SDK库,人脸抓拍无法抓拍问题解决办法
    SDK V200R002C00SPC617 C# Demo匹配SDK V200R002C00SPC616版本SDK库,人脸抓拍无法抓拍问题,具体解决办法为:1. 将SDK.cs文件中LPPU_REAL_PLAY_INFO_S结构体的stStartTime参数类型由PU_TIME_S修改为PU_TIME,stEndTime同理(SDK.cs中第1287、1288行)。2. 将SDK.cs文件中LPPU_REAL_PLAY_INFO_S结构体的szReserved参数的类型由string修改为byte[](SDK.cs中第1292行)。3. 将SDK.cs文件中LPPU_REAL_PLAY_INFO_S结构体的szReserved参数的UnmanagedType属性由ByValTStr修改为ByValArray(SDK.cs中第1291行)。4. 将SDKAccessIntelligent.cs文件中StartFaceSnap方法的real_info_s.szReserved值初始化(new byte[32])后将第22位赋值为1(SDKAccessIntelligent.cs中第103行)。
总条数:47 到第
上滑加载中