【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。

相关推荐
基德爆肝c语言25 分钟前
Qt—信号和槽
开发语言·qt
geovindu25 分钟前
go:Decorator Pattern
开发语言·设计模式·golang·装饰器模式
故事和你911 小时前
洛谷-算法2-1-前缀和、差分与离散化1
开发语言·数据结构·c++·算法·深度优先·动态规划·图论
励志的小陈7 小时前
贪吃蛇(C语言实现,API)
c语言·开发语言
Makoto_Kimur8 小时前
java开发面试-AI Coding速成
java·开发语言
laowangpython8 小时前
Gurobi求解器Matlab安装配置教程
开发语言·其他·matlab
wengqidaifeng8 小时前
python启航:1.基础语法知识
开发语言·python
观北海8 小时前
Windows 平台 Python 极简 ORB-SLAM3 Demo,从零实现实时视觉定位
开发语言·python·动态规划
Ulyanov10 小时前
《PySide6 GUI开发指南:QML核心与实践》 第二篇:QML语法精要——构建声明式UI的基础
java·开发语言·javascript·python·ui·gui·雷达电子对抗系统仿真
码界筑梦坊10 小时前
357-基于Java的大型商场应急预案管理系统
java·开发语言·毕业设计·知识分享