C#编程语言与.NET平台解析

需积分: 9 8 下载量 176 浏览量 更新于2024-08-20 收藏 4.81MB PPT 举报
"C#语言与.NET平台的介绍,包括C#的特点、.NET Framework的构成以及代码执行流程" C#是一种由微软公司推出的面向对象的编程语言,它旨在结合C和C++的强大功能与VB的高效开发速度。C#的设计目标是解决C/C++的复杂性和VB的灵活性不足的问题,提供一种既能快速开发又能深入操作系统底层的编程工具。在.NET战略中,C#扮演着关键角色,用于构建基于Microsoft .NET Framework的应用程序。 .NET Framework是微软提供的一个开发和运行应用程序的平台,包含多个组件,如Common Language Runtime (CLR)、Just-In-Time (JIT) 编译器、Common Type System (CTS) 和Microsoft Intermediate Language (MSIL)。CLR是.NET的核心,负责管理代码的执行,包括内存管理、类型安全以及异常处理。JIT编译器将源代码编译成MSIL,这是一种中间语言,然后在运行时通过JIT转换为机器码,以实现高效的执行。 C#语言的特点包括: 1. 面向对象:C#支持类、接口、封装、继承和多态等面向对象特性,便于构建可维护和可扩展的软件。 2. 现代编程语言:C#引入了诸如垃圾回收、自动类型推断(var关键字)、匿名方法、LINQ等现代编程概念,提高了开发效率。 3. 结构与安全性:C#允许开发者直接访问操作系统底层,同时提供了严格的类型检查和异常处理,确保代码的安全性。 4. .NET Framework集成:C#应用程序可以直接利用.NET Framework提供的大量类库和服务,简化网络、数据库和图形用户界面的开发。 5. 适应性广泛:C#不仅适用于桌面应用,还可以开发Web服务、移动应用和游戏,具有广泛的适用场景。 在代码执行流程上,C#与C++和VB等传统语言有所不同。C++和VB的源代码首先被编译成可执行文件,而C#源代码(.cs文件)则被编译成MSIL,然后在运行时通过CLR的JIT编译器转化为针对特定平台的机器码执行。这种动态编译方式允许.NET程序跨平台运行,并能根据实际需要优化代码性能。 C#中的"out"关键字是一个特殊的参数修饰符,它用于方法调用时传递参数。不同于常规的传值或传引用,"out"参数在方法调用前不需要初始化,且在方法内部会被强制赋值。当方法返回时,"out"参数的值会传递回调用者,因此实参和形参都不能省略。这种机制常用于需要返回多个值的场景,或者在方法间传递状态的情况。 C#结合了C/C++的灵活性和VB的高效,通过.NET Framework提供了一个强大的开发环境,同时引入了诸如"out"关键字等语言特性,以支持更加灵活和高效的编程实践。
2021-09-11 上传

转c#写法:#!/bin/sh time_stamp=`date +%s` function CheckStop() { if [ $? -ne 0 ]; then echo "execute fail, error on line_no:"$1" exit!!!" exit fi } function GenEcdsaKey() { ec_param_file_path="/tmp/ec_param.pem."$time_stamp openssl ecparam -out $ec_param_file_path -name prime256v1 -genkey CheckStop $LINENO openssl genpkey -paramfile $ec_param_file_path -out $1 CheckStop $LINENO openssl pkey -in $1 -inform PEM -out $2 -outform PEM -pubout CheckStop $LINENO rm $ec_param_file_path echo "gen_ecdsa_key succ prikey_path:"$1" pubkey_path:"$2 } function GenEcdsaSign() { ec_sign_info_file="/tmp/ec_sign_info_file."$time_stamp ec_sign_info_sha256="/tmp/ec_sign_info_sha256."$time_stamp ec_binary_sign_file="/tmp/ec_binary_sign_file."$time_stamp echo -n "$1"_"$2" > $ec_sign_info_file openssl dgst -sha256 -binary -out $ec_sign_info_sha256 $ec_sign_info_file CheckStop $LINENO openssl pkeyutl -sign -in $ec_sign_info_sha256 -out $ec_binary_sign_file -inkey $3 -keyform PEM CheckStop $LINENO openssl base64 -e -in $ec_binary_sign_file -out $4 CheckStop $LINENO rm $ec_sign_info_file $ec_sign_info_sha256 $ec_binary_sign_file echo "gen_ecdsa_sign succ sign_file_path:"$4 } function VerifyEcdsaSign() { ec_sign_info_file="/tmp/ec_sign_info_file."$time_stamp ec_sign_info_sha256="/tmp/ec_sign_info_sha256."$time_stamp ec_binary_sign_file="/tmp/ec_binary_sign_file."$time_stamp echo -n "$1"_"$2" > $ec_sign_info_file openssl dgst -sha256 -binary -out $ec_sign_info_sha256 $ec_sign_info_file CheckStop $LINENO openssl base64 -d -in $4 -out $ec_binary_sign_file CheckStop $LINENO openssl pkeyutl -verify -in $ec_sign_info_sha256 -sigfile $ec_binary_sign_file -pubin -inkey $3 -keyform PEM rm $ec_sign_info_file $ec_sign_info_sha256 $ec_binary_sign_file } function Usage() { echo "Usage:" echo "mmiot_ecdsa_sign.sh gen_ecdsa_key <private_key_file_path> <public_key_file_path>" echo "mmiot_ecdsa_sign.sh gen_ecdsa_sign <product_id> <sn> <private_

2023-05-31 上传