我正在创建一个函数,我需要传递一个对象,以便它可以被函数修改.有什么区别:
public void myFunction(ref MyClass someClass)
Run Code Online (Sandbox Code Playgroud)
和
public void myFunction(out MyClass someClass)
Run Code Online (Sandbox Code Playgroud)
我应该使用哪个以及为什么?
我的公司即将雇用.NET开发人员.我们在各种.NET平台上工作:ASP.NET,Compact Framework,Windowsforms,Web Services.我想编制好的问题列表/目录,这是一种最低标准,以确定申请人是否有经验.所以,我的问题是:
您认为一个优秀的.NET程序员应该回答什么问题?
我也将它视为自己的清单,以便了解我自己的赤字在哪里(有很多......).
*更新:它想明确我们不仅仅测试.NET知识,解决问题的能力和一般编程技能对我们来说更为重要.
我有一个非常简单的问题.我为你演示了一个非常简单的功能来演示我的问题.
static void Main(string[] args)
{
double[,] mydouble = new double[1, 4];
mynewMatrix(out mydouble);
}
public static void mynewMatrix(out double[,] d)
{
for (int i = 0; i < 4; i++)
d[0, i] = i;
}
Run Code Online (Sandbox Code Playgroud)
错误:
使用未分配的输出参数'newMAt'必须在控制离开当前方法之前分配out参数'newMAt'
我不知道问题出在哪里.
我主要使用C++工作,现在我在新工作中使用C#,在这里阅读了关于'ref'关键字和c#值与引用类型的内容后,我仍然发现它们有些混乱.
至于我理解这些,如果你将这些传递给方法,这些将是类似的C++样式:
价值类型:
public void CSharpFunc(value)
Run Code Online (Sandbox Code Playgroud)
和
public void CPlusplusFunc(value)
Run Code Online (Sandbox Code Playgroud)
参考类型:
public void CSharpFunc(reference)
Run Code Online (Sandbox Code Playgroud)
和
public void CPlusPlusFunc(&reference)
Run Code Online (Sandbox Code Playgroud)
'ref'/指针
public void CSharpFunc(ref bar)
Run Code Online (Sandbox Code Playgroud)
和
public void CPlusPlus(*bar)
Run Code Online (Sandbox Code Playgroud)
这是一个正确的比喻吗?
我正在阅读部分方法,因为它们将在C#-6/Visual Studio 2013更新2中与Windows Universal Projects结合使用变得更加重要.在阅读文档时,我读到了部分方法签名的奇怪限制:
部分方法可以有ref但不能输出参数.
我不明白这种限制的原因.由于部分方法基本上是在不同文件中签名和实现的常规方法,因此有哪些技术原因不支持参数?或者此限制的任何其他原因.特别是因为它们确实支持非常相似的 ref参数.
我正在尝试计算给定路径的所有子文件夹中的文件总数.我正在使用递归函数调用.可能是什么原因?
码:
int iCount =0;
getFileCount(_dirPath, out iCount);
private void getFileCount(string _path, out int iCount )
{
try
{
// gives error :Use of unassigned out parameter 'iCount' RED Underline
iCount += Directory.GetFiles(_path).Length;
foreach (string _dirPath in Directory.GetDirectories(_path))
getFileCount(_dirPath, out iCount);
}
catch { }
}
Run Code Online (Sandbox Code Playgroud) 我有两种方法.首先,我在调用第二个方法时从第一个方法传递一个字符串.在第二种方法中,我做了计算.
现在我想将结果传递回第一个方法.
我如何实现这一目标?
我的代码是这样的:
private void RegisterButton_Click(object sender, RoutedEventArgs e)
{
string databaseName = "databaseName";
CheckDatabase(databaseName);
bool test = bRet;
}
private bool CheckDatabase(string databaseName)
{
string connString = "Server=localhost\\SQLEXPRESS;Integrated Security=SSPI;database=master";
string cmdText = "select * from master.dbo.sysdatabases where name=\'" + databaseName + "\'";
bool bRet = false;
using (SqlConnection sqlConnection = new SqlConnection(connString))
{
sqlConnection.Open();
using (SqlCommand sqlCmd = new SqlCommand(cmdText, sqlConnection))
{
int nRet = sqlCmd.ExecuteNonQuery();
if (nRet <= 0)
{
bRet = false;
}
else
{
bRet …
Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我哪一个更轻ref
和out
.我知道ref
和out
关键字和用法之间的确切区别.
在我来说,我可以同时使用ref
和out
,但不知道打火机一个.
如果有人需要参考,请到这里告诉我较轻的.
提前致谢..