C#入门教程:理解-out参数在.NET编程中的应用

需积分: 10 2 下载量 59 浏览量 更新于2024-08-19 收藏 4.81MB PPT 举报
"C#入门经典,关注`-out`参数的使用,适用于初学者" C#编程语言,作为微软推出的面向对象的现代化编程语言,旨在为开发者提供一个既能充分利用操作系统底层功能,又能享受面向对象编程优势的环境。C#语言在设计时借鉴了C/C++的优秀特性,同时简化了一些复杂的概念,使其更适合快速开发和网络编程需求。它作为`.NET`战略的核心部分,允许开发者编写各种类型的应用程序,包括基于通用网络协议的互联网服务、数据库应用、网络服务以及Windows桌面应用。 在C#中,`-out`是一个命令行编译选项,用于指定输出文件的名称。当编译C#源代码时,`-out`参数用来告诉编译器将生成的可执行文件或类库命名为指定的文件。例如,`csc Program.cs -out:MyApp.exe`会将`Program.cs`编译成名为`MyApp.exe`的可执行文件。这个参数在需要自定义生成文件的名称或者路径时非常有用,尤其是在自动化构建和部署流程中。 在方法调用中,`out`是一个关键字,用于表示方法参数的传递方式。与`ref`类似,`out`参数允许方法返回多个值,但有几点关键的区别: 1. **初始化要求**:使用`out`的参数必须在方法内部进行初始化,而不需要在调用方法时预先赋值。相比之下,`ref`参数在调用方法前必须赋值。 2. **返回值的角色**:`out`参数主要用于方法返回多个值,而`ref`则更像常规参数,只是允许修改传入的变量值。 3. **参数传递**:在调用方法时,`out`参数后面的实参不能省略,因为它必须被方法初始化。而`ref`参数可以省略,但通常不推荐,因为这可能导致意外的行为。 `.NET Framework`是C#编程的基础,它包含了多种组件,如Common Language Runtime (CLR)、Just-In-Time (JIT)编译器、Common Type System (CTS)和Microsoft Intermediate Language (MSIL)。这些组件协同工作,确保不同语言编写的代码能够在.NET平台上无缝交互。 CLR作为.NET的核心运行时环境,负责代码的管理和执行,包括类型安全检查、垃圾回收、线程管理等。JIT编译器将MSIL(中间语言)动态编译为本地机器代码,以提高程序运行效率。CTS保证了所有.NET语言之间的类型兼容性,而MSIL是跨语言的二进制代码,使得任何支持.NET的语言编译后的代码都能在.NET平台上运行。 .NET Framework还包含一系列命名空间,提供了丰富的类库,涵盖了从文件操作到网络通信等各种功能,极大地简化了开发者的工作。C#程序的基本结构包括类、方法、变量、常量、条件语句、循环、异常处理等,这些都是学习C#编程时需要掌握的基础知识。 `-out`参数和`out`关键字是C#编程中的两个重要概念,它们分别涉及到编译过程和方法调用中的参数传递。理解和熟练运用这些知识点是C#初学者迈向专业开发者的关键步骤。通过深入学习C#和.NET Framework,开发者可以构建出高效、可靠且易于维护的应用程序。

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