【C#】与cpp异同总结

devtools/2024/10/21 9:55:26/

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

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

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

不需要实例化调用,也不能实例化调用。

2.类中get和set

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

public class MyClass
{private int myField;public int MyProperty{get{return myField; // 返回字段的值}set{myField = value; // 设置字段的值}}
}
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。
方法一:$字符和插值

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

方法二:占位符

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

6.C#中捕获异常

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。

7.C#代码抽离

分文件编写,使用时调用:using Class…
但是外部调用最好采用封装方式,类似dll分享。

在同一解决方案中,新建类库。

在类库中编写cs放类文件,然后生成会编译出一个dll文件,将main.cs中的引用加入需要引用的dll,然后在代码中using即可。

这样重新生成main.cs的方案,就会在bin文件中找到exe和dll,双击运行


http://www.ppmy.cn/devtools/40899.html

相关文章

kali搭建Vulhub靶场

简单概述 Vulhub是一个面向大众的开源漏洞靶场,借助Docker简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。旨在让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。 Docker是一个开源的容器引擎,它有助于更快地交付应用…

从零手写实现 tomcat-06-servlet bio/thread/nio/netty 池化处理

创作缘由 平时使用 tomcat 等 web 服务器不可谓不多,但是一直一知半解。 于是想着自己实现一个简单版本,学习一下 tomcat 的精髓。 系列教程 从零手写实现 apache Tomcat-01-入门介绍 从零手写实现 apache Tomcat-02-web.xml 入门详细介绍 从零手写…

基于springboot+vue+Mysql的音乐翻唱与分享平台

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

Minio(官方docker版)容器部署时区问题研究记录

文章目录 感慨&概述补充:MINIO_REGION和容器时间的关系 问题一:minio容器和本地容器时间不一致问题说明原因探究解决方法结果验证 问题二:minio修改时间和本地查询结果不一致具体问题原因探究解决办法时间转化工具类调用测试和验证上传文…

【已解决】chrome/其他浏览器:你的连接不是私密连接

一、问题原因 这个问题一般是https的网址会有,它是安全的访问连接,在原来的基础上SSL/TLS协议进行加密和身份验证。 这里可能是证书过期了,其实 二、解决方法【亲测有效】 方法1:点击高级,如果有继续访问对应的http…

IPFoxy Tips:什么是静态住宅IP?静态ISP代理指南

静态住宅代理(也称为静态ISP代理)是最流行的代理类型之一。它们也是隐藏您的身份并保持在线匿名的最佳方法之一。您为什么要使用住宅代理而不是仅使用常规代理服务?下面我具体分享。 一、什么是静态住宅代理? 首先,我…

想让别人帮你,就要把对方变成“利益共同体”

目录 1.麻烦别人是一种拉近关系的方式 2.大众认为所谓的正确不会让你活得很好

2024年人工智能威胁态势报告:有关AI系统及AI应用的安全风险与安全防护全景

HiddenLayer公司最新发布的《2024年AI威胁场景报告》中,研究人员阐明了AI相关漏洞及其对组织的影响,并为应对这些挑战的IT安全和数据科学领导者提供了指导建议。最后,报告还揭示了各种形式的AI安全控制的前沿进展。 关键数据 平均而言&#x…