C#高级用法【自认为】(不断更新)

1.使用ref 和out  ---修改原来的值和C++的指针和引用有点相似

ref和out 都是按地址传递的,使用后都将改变原来的数值, ref 和 out 关键字在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。

区别就是ref需要先初始化值,而out不需要,总结起来就是ref 有进有出,out只出不进

还有就是我们经常使用的函数都是返回一个值的【返回数组,list,等除外】,那么我们如果想在一个函数中返回多个值呢?那么out就起作用了,我们可以使用out返回多个值

拓展:学习这个知识的时候,学到了params params是为动态数组而准备的,我们直接输入数组的元素就行了)

例如下方代码,如果没有这个params 关键字 ,我们需要 这样调用:Getdd(new []{1,2,3});

public void Getdd(params int[] pp)
    {
        foreach (var p in pp)
        {
            print(p);
        }
    }
void Start()
{
    Getdd(1,2,3);
}

2. Linq:C#语言特性(Language Integrated Query)即语言集成查询

LINQ是一组语言特性和API,使得你可以使用统一的方式编写各种查询。用于保存和检索来自不同数据源的数据,从而消除了编程语言和数据库之间的不匹配,以及为不同类型的数据源提供单个查询接口。

LINQ总是使用对象,因此你可以使用相同的查询语法来查询和转换XML、对象集合、SQL数据库、ADO.NET数据集以及任何其他可用的LINQ提供程序格式的数据。

LINQ主要包含以下三部分:

1、LINQ to Objects      主要负责对象的查询。

2、LINQ to XML           主要负责XML的查询。

3、LINQ to ADO.NET   主要负责数据库的查询。

  LINQ to SQL  这个查询方式可能有些慢

  LINQ to DataSet  [可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。]

  LINQ to Entities  实体

3.UnityEvent和UnityAction  TODO:两者区别

    1.UnityAction本质上是delegate,且有数个泛型版本(参数最多是4个),一个UnityAction可以添加多个函数(多播委托)

         委托:定义一个事件容器,用户可以不断向这个容器绑定事件,用户不关心什么时候触发,只关注自己要实现的内容,而这                      个容器就监听这事件什么时候被触发,就通知这些用户执行这些方法,只是充当一个通知者

    2.UnityEvent本质上是继承自UnityEventBase的类,它的AddListener()方法能够注册UnityAction,RemoveListener能够取消注册UnityAction,还有Invoke()方法能够一次性调用所有注册了的UnityAction。UnityEvent也有数个泛型版本(参数最多也是4个),但要注意的一点是,UnityAction的所有带参数的泛型版本都是抽象类(abstract),所以如果要使用的话,需要自己声明一个类继承之,然后再实例化该类才可以使用。那我们能不能这么理解:将UnityEvent看作是unity所有的一个大容器,然后将不同委托分类添加进去,然后使用Invoke(),一次将所有注册了委托下面绑定的方法调用起来

     4.System.Serializable

5:网络方面:

Q5.1你在字符串截取的时候,如果直接使用str.Length 无法正确区分中文和英文的长度,

A1:int length =System.Text.UnicodeEncoding.Default.GetByteCount(str);

A2:int length = Encoding.GetEncoding("GB2312").GetBytes(tstr.ToCharArray()).Length; 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值