视频

每个项目对应的是一个解决方案,一个解决方案下面可以包含多个项目(这个项目可以认为是一个小的模块)。写成中文也识别的,但一般不要这样,写成英文的好

当勾选不使用顶级语句的时候创建的程序内容更多一点,如下图所示,不然就是什么都没有 但是可以直接进行程序编写


不勾选就是下面这样的


在这个解决方案下,添加一个项目

正常退出的话,代码就是为0

using System; //引入命名空间 Console就是在这个命名空间下面的
//命名空间:namespace 可以方便代码进行分类、使用。引入命名空间就可以了
namespace _001_开始 //可以写成中文,但一般不这样写 写英文 命名空间一般与项目名保持一致
{
//一个命名空间里面有多个类
class Rectangle
{
// 成员变量
double length;
double width;
public void Acceptdetails()
{
length = 4.5;
width = 3.5;
}
public double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
}
//在命名空间下创建了一个类
internal class Program //类的名字就是Program,与文件名是保持一致的
{
//在类下面创建了一个方法
static void Main(string[] args)
{
Rectangle r = new Rectangle();//实例化一个类
r.Acceptdetails();
r.Display();
Console.ReadLine();
}
}
}
//注释的快捷键:ctrl+k ctrl+c 取消注释 ctrl+k ctrl+u

1、c#是运行在.net平台上面的(好像是只能运行在这个上面),但是.net平台上可以有很多运行(比如vb和c++),不止c#,但是c#是这个平台上最主流的开发语言。
2、c#是在c和c++以后诞生的,好用,在这个上面鼓励是不使用指针的
3、应该是类或者对象的时候才需要new进行初始化
4、.net(也就是.net core)与.net framework 的区别:
5、参考资料
说是说关键字 但不一定 就是关键字 只是吧他们放到了这里而已
详解
总结:
1、修饰类
2、修饰方法
3、修饰变量
4、类的非静态成员属于类的实例所有,每创建一个类的实例都在内存中为非静态成员开辟了一块区域。而类的静态成员属于类所有,为这个类的所有实例所共享,无论这个类创建了多少个副本,一个静态成员在内存中只占有一块区域。
class A
{
string name;
static int ID;
}
A a=new A();
a.ID=1;
a.name="w";
那么实例化后,两个变量都赋了值
再实例化对象a2
A a2=new A()
a2的name为空,但a2的ID则已经有了值1
详解
1、var 是弱化类型的定义,可代替任何类型,编译器会根据上下文来判断你到底是想用什么类型,在无法确定自己将用的是什么类型时就可以使用var,类似 OBJECT 但是效率比OBJECT高。
2、使用var定义变量时有以下四个特点:
详解
Partial是局部类型的意思。允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。C#编译器在编译的时候仍会将各个部分的局部类型合并成一个完整的类
C#中 OUT 的用法
创建函数的时候,在创建的变量前面写上out。调用的时候传递进去的的变量前面需要也写上out,那么这个变量在里面任意值得改变,都会传递出去。
class Test
{
static void Main(string[] args)
{
int n;//调用方法之前,对out参数传递的变量只需声明,可以赋值也可以不赋值,赋值也会在方法中被覆盖掉
int a = 1;
//bool b = MyTryParse("123", out n, a);//不加类名也可以
bool b = Test.MyTryParse("123", out n, a);//方法的参数使用out修饰时,调用该方法时也要加上out关键字
Console.WriteLine(b);
Console.WriteLine(n);
Console.WriteLine("a的值是:" + a);//c#中函数里面的改变对外部也是没有影响的
//Console.ReadKey();
}
static bool MyTryParse(string s, out int result, int a)//方法的参数使用out修饰时,调用该方法时也要加上out关键字
{
result = 0;
try
{
result = Convert.ToInt32(s);// 使用out参数传递变量时,必须在方法内为其赋值,否则return的返回值没有意义
a = 5;
return true;
}
catch
{
return false;
}
}
}

比如我定义一个类A 一个类B
A a =new A();
a.getvalue()//实现a的某方法
B b= a as B;
b.getvalue()//这到底是实现A的方法还是B的?
as 进行类型转换。 转型失败返回null,而不是抛出异常。
比如你举例的 B b= a as B;就相当于B b= (B)a;但是如果转型失败后一种就会抛出异常,而前一种b == null;
如果B是A 的基类,那么最后的b.getvalue()实际调用的是a的方法。
如果B不是A的基类,那么b为null b.getvalue() 会引发异常
详解
详解
最常用的功能是,表示一个类(接口)继承自一个类(或实现了某个接口)
public class A :B
{
public A()
{
dosomething();
}
}


namespace Base
{
internal class Program
{
public static List<stdudent> students = new List<stdudent>();
static void Main(string[] args)
{
Type intType = typeof(int);
Console.WriteLine(intType.FullName);
Type stringType = typeof(string);
Console.WriteLine(stringType.FullName);
//初始化列表
students.Add(new stdudent() {
Age = 11, Grade = 70, Name = "王刚", ID = 1 });
students.Add(new stdudent() {
Age = 21, Grade = 50, Name = "小工", ID = 2 });
students.Add(new stdudent() {
Age = 31, Grade = 80, Name = "小红", ID = 3 });
students.Add(new stdudent() {
Age = 42, Grade = 100, Name = "刘德华", ID = 4 });
Type type = typeof(stdudent);
Console.WriteLine