char 转换成 string
char[] chars = new char[] { 'a','b','c','d','e','f'};
string a = new string(chars);
Console.WriteLine(a);
float 转换成 int
float fvalue;
fvalue = 100.923f;
int Ivalue = (int)fvalue;
Console.WriteLine(fvalue);
Console.WriteLine(Ivalue);
string 转换成 int
string svalue = "945";
Ivalue = 0;
Ivalue = int.Parse(svalue);
Console.WriteLine(Ivalue);
如果
int 转换成 string
使用tostring 就可以了
console.write() 输出语法 以及 string 字符串连接用法
string 和 console.wirte通用的都一样!!!!
Console.Write()内部输出字符串+变量方法:
方法一:
使用 “{0}”方法
int a = 100;
Console.WriteLine("爷爷今年{0}岁了",a);
方法二:
使用“”+方法
int a = 100;
Console.WriteLine("爷爷今年"+a+"岁了");
方法三:
使用$"{a}"方法
int a = 100;
Console.WriteLine($"爷爷今年{a}岁了");
class的构造函数:
//没有加函数的代码
public class Student
{
public string Name;
public int Id;
public void print()
{
Console.WriteLine($"名字:{Name},序号:{Id}");
}
}
static void Main(string[] args)
{
Student student = new Student();
student.Name = "奥里给";
student.Id = 250;
student.print();
}
没有使用构造函数 在初始化成员变量的非常的麻烦
这是加了构造函数的代码
public class Student
{
public string Name;
public int Id;
public void print()
{
Console.WriteLine($"名字:{Name},序号:{Id}");
}
public Student(string neme,int id)
{
this.Name = neme;
this.Id = id;
}
}
static void Main(string[] args)
{
Student student = new Student("aoligei",250);
student.print();
}
在初始化的时候就很舒服,直接实例时候就初始化了
构造函数可以有多个参数,也可以没有参数
访问修饰符
public 不管内部还外部类都可以访问
private 只允许自己内部类成员访问
static 静态属性,静态方法
public class Student
{
public static string Name = "";
public static int Id = 0;
public string name = "";
public int id = 0;
public static p1()
{
Console.WriteLine("静态成员");
}
public p2()
{
Console.WriteLine("非静态成员");
}
public void print1()
{
Console.WriteLine($"1名字:{Name},学号{Id}");
都能被调用
Name Id //静态变量
name id //非静态变量
p1();//静态函数
p2();//非静态函数
}
static public void print2()
{
Console.WriteLine($"名字:{Name},学号{Id}");
可以被调用
Name Id //静态变量
p1(); //静态函数
不能被调用
//p2(); //非静态函数
//name id //非静态变量
}
public Student()
{
//都能被调用
Name
Id //静态变量
name
id //非静态变量
p1();//静态函数
p2();//非静态函数
}
public Student(string name,int id)
{
Name = name;
Id = id;
}
}
内部:
静态成员函数 只能调用静态成员变量,函数 不能调用 非静态成员变量,函数
非静态成员函数 既能调用非静态成员变量,函数 也能调用 静态成员变量,函数(都能调用)
构造函数 既能调用非静态成员变量,函数 也能调用 静态成员变量,函数(都能调用)
外部:
在main函数里面调用函数和变量的时候,加了static修饰的函数或变量,只能被类名调用。
![](https://i-blog.csdnimg.cn/blog_migrate/3acfb096774225c4f92278d64040318e.png)
ref ,out 修饰符
ref修饰符号用法
static void test(ref int x) //1
{
x += 10;
}
static void Main(string[] args)
{
int x = 0;
test(ref x); //2
Console.WriteLine(x);
}
最后输出 x 为 = 10
也就是说凡是用ref修饰的变量 在传递的过程中需要先赋初始值 才能进行调用
使用方法:
1.在自定义函数的途中应该这样(ref int x)
2.在函数调用传参时候需要这样(ref x)
总结: ref是先初始化在传递参数,传递回来的是运算完毕的数据
out 修饰符号用法
static void test(out int x) //1
{
x = 0; //2
x += 10; //3
}
static void Main(string[] args)
{
int x;
test(out x); //2
Console.WriteLine(x); //4
}
最后输出x = 10
也就是说凡是用ref修饰的变量 在传递的过程中可以不用赋值
在自定义函数里面使用时候需要赋值才能进行调用。
C#属性
属性提供了一种机制,可以把读取和写入对象的 某些性质与一些操作关联起来,甚至还可以对此类性质进行计算
private string name = "小明";
public string Name
{
get{
return name;
}
set
{
name = value;
}
}
只要调用 Name 并且给其赋值 那么最终 会返回一个结果 就是你刚才你给他赋的那个值
C#索引器
有了索引可以把类用作数组去操作!
private string[] member;
public string this[int idx]
{
get
{
return member[idx];
}
set
{
member[idx] = value;
Console.WriteLine($"{value}");
}
}
在申明索引外部变量时需要在构造函数里面去赋初始值(实例化一下)。
C#命名空间
如果一个程序包含多个源文件,编译程序时则需要将所有的源文件放在一起编译,具体的命令格式如下
csc <source 文件名> <source 文件名> ... <source 文件名>
csc /?
命名空间规范:
1.在同一个命名空间里面 类名不能重名
2.在不同的命名空间 类名可以重名
在代码块内,可选用 0 个或者多个 using 指令来导入其他命名空间和类型的名称,这样
就可以直接地而不是通过限定名来引用它们。
命名空间名称可以是单个标识符或者是由“.”标记分隔的标识符序列。当使用“.”标
记时,允许一个程序直接定义一个嵌套命名空间,而不必按词法嵌套若干个命名空间声明。
例如,下面的两段代码的功能是等效的
//可以这样引用
namespace mm.nn
{
class A {}
class B {}
}
///
namespace mm
{
namespace nn
{
class A {}
class B {}
}
}
C#集合
集合是和数组一起使用的。在日常应用 中,直接使用数组会有很大的限制,例如一旦定义并创建数组后,数组的内容就固定不变。要想在里面添加或删除数据,必须创建一个新的数组。而通过集合,可以把相互联系的 数据组合到一个集合内,这样就能够有效地处理这些密切相关的数据。通过集合能够使用相 同的代码来处理一个集合内的所有元素,而不需要编写不同的代码来处理单个独立的对象
数组的实现是 System.Array 类的实例
System.Collections 类是处理对象列表的
在 System.Collections 命名空间中,可以通过如下接口提供基本集合功能.
IEnumerable,用于迭代集合项。
ICollection,能够获取集合项的个数,并把项复制到一个简单的数组类型中。
IList,提供了集合项列表,并访问这些项和一些与项列表相关的功能。
Idictionary,和 IList 类似,但是它能够通过键码值访问项列表。
数据的遍历
System.Collections.IEnumerator 变量 = 数组.GetEnumerator();
while(变量.MoveNext())
{
Console.WriteLine(变量.Current);
}
数据的复制
这个函数有多个重载
常用的就这两个,还有几个重载可以去微软看文档
1.System.Array.Copy(str1,str2,str1.Length);
2.System.Array.Copy(str1,0,str2,0,str1.Length); str1 . 0 ,和Length 有关系是个区间
数据的搜索
indexOf 方法去实现
C# CreateInstance方法
//这个方法可以改变数组的维度 默认数组的下标是0开始的 用了这个函数可以自定义定义数组。
public static Array CreateInstance(Type elementType, int[] lengths, int[] lowerBounds);
elementType : 要创建的 Array 的 Type。 // 想要创建的类型
lengths : 一维数组,它包含要创建的 Array 的每个维度的大小 // 数组大小
lowerBounds : 一维数组,它包含要创建的 Array 的每个维度的下限(起始索引)。// 开始下标
//使用流程
需要定义大小和起始坐标:
int[] daxiao = new int[]{10};
int[] startArr = new int[]{5};
然后调用Array创建一个变量 让CreateInstance指定需要创建的类型和数组大小
Array myArray = Array.CreateInstance(typeof(string),daxiao,statArr);
创建完以后可以通过setValue赋值
可以通过GetLowerbound 访问上限
可以通过GetUpperBound 访问下限
可以通过System.Collections.IEnumerator 来创建一个索引去遍历里面的数据
如果你是多维数组则可以强制转换