C# 学习之旅(一)
来源:互联网 发布:weka 自定义 分类算法 编辑:程序博客网 时间:2024/05/22 12:40
做项目需要用到一些c#的知识,学一波顺便mark一下一些和c/c++不太一样的地方
首先有可能第一次打开VS2015的时候找不到创建c#的控制台程序,怎么做呢?
这时候应该打开安装目录下的Common7-IDE文件夹,打开devenv.exe程序,那么就能找到创建控制台的c#程序了
c#中的string类型是你在初始化的时候就固定长度了的,而它的一些常用的操作比如append()方法,erase()方法等一些需要改变原来长度的操作时候,string是会把原来的删除,重新生成的,这样带来的开销是很大的,为此,c#中有另外一个string类型叫StringBuilder,new一个新的StringBuilder()那么就和正常的string一样的用法了。
这里有一个比较特别的方法叫AppendFormat(),它的第一个参数是一个“格式”,“格式”加一个大括号,里面的数字i从0开始计数,对应接下来的第i+1个参数,比如里面的s.AppendFormat("nihao{0} {1}", "gz", "hu"),那么大括号里面的0就是gz,1就是hu对应下来
在实际操作中,可能你使用string和StringBuilder的感觉是差不多的,但是对于电脑的运算来说是不一样的,如果字符串的长度固定好就不再改动,那么推荐使用string,而如果某字符串的长度要经常性的修改,那么推荐使用变长的StringBuilder类型
StringBuilder s = new StringBuilder(); s.Append("asd;jasd"); s.AppendFormat("hello {0}", "world\n"); s.AppendFormat("nihao{0} {1}", "gz", "hu"); Console.WriteLine(s);
方便的数字转字符串函数,字符串转数字函数
在以前做ACM的时候经常有数字字符串需要互转的时候,有点麻烦,而c#提供了一些方法可以直接让两者互相转换
int i = 10; string s = i.ToString(); //int类型有一个方法叫 ToString()可以直接转成字符串 Console.WriteLine(s); //字符串有三种方法可以转成int //调用Convert这个类的ToInt32方法,和调用Int32类的Parse方法,但如果输入的参数不正确的话会直接报错 int j = Convert.ToInt32(s); Console.WriteLine(j); int k = Int32.Parse(s); Console.WriteLine(k); //Int32的TryParse方法两个参数,第一个是待转换的字符串,第二个是存放的地方 //好处在于如果待转换的字符串不符合规范,那么它也不会报错,而是给p赋值一个默认的0 int p; bool flag = Int32.TryParse("sdf", out p); Console.WriteLine(p);
接下来是抽象类和接口的问题
在C#中,一个类可以有多个接口,但只能有一个继承的类。
一个类中的接口必须在这个类中重写接口里面的方法,而继承了抽象类的抽象方法也必须重写。
如果继承了抽象类中,里面的方法不是抽象的方法,那么不需要重写。
接口中不允许有数据段,而抽象类仍然是一个类,可以有数据段和自己的方法。
class Man:Person,ISuper{ public override int GetAbstract() { return 5; } public int GetSuper() { return 5; }}abstract class Person{ public string name; public string Getname() { return name; } public abstract int GetAbstract();}interface ISuper{ int GetSuper();}
C#中一些保存集合的数据结构
首先数组和C++类似不介绍,然后是类似于数组的ArrayList和List
ArrayList是弱类型的数据结构,里面可以存放不同数据类型的数据,比较方便,但由于取出数据类型的不确定性,容易发生错误,而List<>是一种强类型的数据结构,创建的时候必须定义好里面存放的是什么数据
//ArrayList是弱类型的数据结构,里面可以保存不同类型的数据 ArrayList a = new ArrayList(); a.Add(5); a.Remove(5); a.Add("asduiohasod"); foreach(var i in a) { Console.WriteLine(i); } List<int> aa = new List<int>(); aa.Add(65); aa.AddRange(new int[] { 501, 502 }); //寻找value为501的索引 Console.WriteLine(aa.IndexOf(501)); //判断List里是否有501的数据 Console.WriteLine(aa.Contains(501)); aa.Remove(501); aa.Insert(1, 1001);
Hashtable和Dictionary
Hashtable类似c++里面的map,但同样它是弱类型的,即支持里面存放不同数据类型的数据,访问里面的数据和c++的map是一样的,而Dictionary则是强类型的,如同c++里面的map,需要声明的时候给定存放的数据类型
Hashtable ht = new Hashtable(); ht.Add("hf", "123"); ht.Add(100, 100); Console.WriteLine(ht["hf"]); Dictionary<string, string> d = new Dictionary<string, string>(); d.Add("5", "5");
SortedList
类似c++中的set,里面的元素按照key的值大小排序,和插入的顺序无关
SortedList<int, int> s1 = new SortedList<int, int>(); s1.Add(1, 1); s1.Add(0, 2); foreach (var i in s1) Console.WriteLine(i.Key);
- C# 学习之旅(一)
- C#学习之旅一-初识
- 【c#自学之旅】一、开始学习
- C#学习之路-MVC(一)
- C#学习摘要之(一)
- C#学习之路一
- C#之委托学习一
- C#之Lambda学习一
- C#之String学习一
- C#学习之路一
- ``` > **c#学习(一)** ```
- c#学习(一)
- C#编程学习入门经验 (一) 独孤九剑之破剑篇
- c#学习之路 引用参数(一)
- C#多线程学习之(一)——提纲挈领
- C#多线程学习之(一)——提纲挈领
- C#学习之GDI + 图形编程基础(一)
- C#学习之路-任务、线程(一)
- c++程序设计模式之factory模式
- 算法与游戏之AABB碰撞盒算法
- AndroidStudio 获取sha1
- Ubuntu Windows双系统切换技巧
- 微信开发-分享页面修改
- C# 学习之旅(一)
- k8s网络插件cni
- 紫书例题 10-26 UVa 11440
- Math类中包含基本的数字操作,如指数、对数、平方根和三角函数。
- Redis集群搭建与简单使用
- 6 抽象工厂模式
- 年纪大的程序员有何出路?
- kernel互斥锁mutex
- IOS 国际化设置(i18n)