C#入门教程:理解-out参数与.NET平台

需积分: 10 1 下载量 95 浏览量 更新于2024-08-13 收藏 4.81MB PPT 举报
"C#入门经典教程" 在C#编程中,`out`是一个重要的关键字,它用于方法调用时的参数传递。`out`参数在方法调用时扮演了一个特殊的角色,它允许方法来初始化传入的变量,而无需在调用方法之前就对变量进行赋值。这是与`ref`关键字的一个关键区别,`ref`要求变量在传递前必须已经赋值。 1. `out`参数的使用规则: - 当参数标记为`out`时,调用方法时实参必须声明为`out`,且不需预先赋值。 - 在方法内部,`out`参数必须在返回之前被赋值,否则编译器会报错。 - 方法调用后,`out`参数的值将被改变,调用者可以通过这个参数获取方法的结果。 例如: ```csharp void Method(out int number) { number = 5; // 必须在方法内赋值 } int num; Method(out num); // 调用方法,num未初始化 Console.WriteLine(num); // 输出5,现在num已经被初始化 ``` 2. .NET Framework和C#的关系: - C#是一种由微软(Microsoft)开发的面向对象的编程语言,它是.NET战略的核心部分,用于构建.NET Framework上的应用程序。 - .NET Framework提供了一个运行环境,称为Common Language Runtime (CLR),它负责管理代码的执行,包括内存管理、类型安全和异常处理等。 - Just-In-Time (JIT)编译器将C#编写的源代码编译成中间语言(MSIL),然后在运行时转换为特定平台的机器码。 - 公共类型系统(CTS)确保不同编程语言之间的互操作性,所有.NET语言都可以共享相同的类型定义。 - .NET Framework包含大量的命名空间,如System、System.IO等,为开发者提供了丰富的类库来实现各种功能。 3. .NET Framework的结构: - .NET Framework由多个组件组成,包括类库、CLR、ASP.NET、Windows Forms等,它们共同为开发者提供了一个统一的开发环境。 - 类库包含了各种预定义的类和接口,可以用于文件操作、网络通信、数据库访问等。 - CLR作为.NET的核心,它执行编译后的MSIL代码,并提供了诸如垃圾回收、类型检查和安全性等服务。 4. C#程序的基本结构: - C#程序通常由一个或多个类组成,每个类包含方法和字段。 - 主函数(`Main`)是程序的入口点,C#程序从这里开始执行。 - 使用命名空间(`namespace`)来组织代码,避免名称冲突。 - C#支持多种控制流语句,如条件语句(`if-else`)、循环语句(`for`, `while`, `do-while`)和异常处理(`try-catch`). 通过深入学习C#和.NET Framework,开发者可以高效地创建各种类型的应用程序,从桌面应用到Web服务,都能游刃有余。C#的简洁语法和强大的功能使其成为现代软件开发的首选语言之一。

转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 上传