【C#】与cpp异同总结

1.类外部调用类内的静态变量和静态成员

C#中类内定义的静态变量和静态方法,在类外访问是用类名.变量 或者 类名.方法

csharp 复制代码
public class MyClass
{
    public static int MyStaticVariable = 10;

    public static void MyStaticMethod()
    {
        Console.WriteLine("This is a static method.");
    }
}
csharp 复制代码
int value = MyClass.MyStaticVariable;
Console.WriteLine(value); // 输出:10
MyClass.MyStaticMethod(); // 输出:This is a static method.

2.类中get和set

cpp中似乎没有这种操作,更多的是用构造函数。

csharp 复制代码
public class MyClass
{
    private int myField;

    public int MyProperty
    {
        get
        {
            return myField; // 返回字段的值
        }
        set
        {
            myField = value; // 设置字段的值
        }
    }
}
csharp 复制代码
MyClass obj = new MyClass();
obj.MyProperty = 10; // 设置属性的值
int value = obj.MyProperty; // 获取属性的值
Console.WriteLine(value); // 输出:10

3.C#中类和结构体(后面再想想!有点意思)

结构体是值类型,类是引用类型。所以,结构体是针对栈区内存分配,类是针对堆区内存分配。

栈区内存,在函数结束时进行回收;堆区内存,在整个C#程序结束时进行回收。
class类实例化对象,在堆区开辟存放数据,在栈区保存的是地址。

4.在C#中abstract和partial

两个用于修饰类的关键字

abstract表明该类是抽象类,不能被实例化,主要作用是被子类继承,其中包含虚函数(纯虚函数),子类函数必须 重写实现具体功能。

partial用于指定一个类、结构体、接口或方法可以分部定义在多个文件中。这对于大型代码文件或多人协作开发非常有用,可以将类或方法的不同部分分割到不同的文件中进行编辑。

5.C#中字符串格式化

类似Python。

方法一:$字符和插值

csharp 复制代码
string name = "Alice";
int age = 25;
string message = $"My name is {name} and I'm {age} years old.";

方法二:占位符

csharp 复制代码
string name = "Bob";
int score = 85;
string message = string.Format("Player: {0}, Score: {1}", name, score);

6.C#中捕获异常

csharp 复制代码
static void Main(string[] args)
        {
            Console.WriteLine("请输入你的年龄:");
            string age = Console.ReadLine();
            int Myage = 0;
            try
            {
                Myage = int.Parse(age) + 10;
            }
            catch
            {
                Console.WriteLine("请输入正确的数字");
                return;
            }
            
            Console.WriteLine(Myage);
            Console.ReadKey();
            
        }

防止用户输入的是字符。如果输入非int类型无法被转换,那么catch将捕获异常进行处理,打印出一句话并且return提前返回。

只有一个return是因为void类型的main函数。

try中如果没有问题,将执行try中的知道完成。try可以理解为一个检测机制,有错误直接进入catch。

相关推荐
代码中介商1 分钟前
C++ 预约系统实战(一):项目总览与 C/S 架构设计
c语言·开发语言·c++
我叫汪枫9 分钟前
RAG 进阶:切分、检索、重排序,以及它和 Agent、微调、MCP 都是什么关系
开发语言·python
弘毅 失败的 mian18 分钟前
数组和指针基础
c语言·开发语言·经验分享·笔记
ai小陈27 分钟前
Python 3.12与CUDA 12.8镜像实战:启动GPU实例后的五项自检
开发语言·人工智能·python·深度学习·ai·gpu算力
AZaLEan__1 小时前
ts接口梳理
开发语言
蓝桉柒71 小时前
java判断语句
java·开发语言
yswenli1 小时前
基于C#开发网站视频嗅探下载工具——BrowserVideoGrabber
c#·videodownload·webvideodownload·videograbber
Lost of 程序猿1 小时前
M2 实战:询价与采购订单聚合落地——跨聚合一致性、领域事件与 Outbox
开发语言·c#·asp.net·.net
速易达网络1 小时前
用 Three.js 打造一座会呼吸的海岛:海风之屿飞艇巡航的技术实现
开发语言·javascript·ecmascript
yujunl1 小时前
U9 BE插件的调试
开发语言