【问题标题】:editing injected parameter without returning value c# [duplicate]编辑注入的参数而不返回值c#[重复]
【发布时间】:2016-11-29 18:50:54
【问题描述】:

我有一个问题:是否可以编辑函数的条目而不返回任何值并且这些条目将被编辑?

想法:

void AddGreeting(string value)
{
    value = "Hi " +value;
}

并像这样调用这个函数:

string test = "John"; 
AddGreeting(test);
//and here the test will be "Hi John"

这可能吗?如果是的话怎么办?

【问题讨论】:

  • 请注意,由于字符串是不可变的,因此您实际上不会修改值,而是将其分配给 new 字符串。

标签: c# function object


【解决方案1】:

您可以像这样轻松使用 ref 参数:

void AddGreeting(ref string value){}

这会做你想做的事:

void AddGreeting(ref string value)
{
    value = "Hi " +value;
}

string test = "John"; 
AddGreeting(ref test);

或者,你可以返回一个字符串,我认为它看起来更整洁

【讨论】:

  • 请注意,由于字符串是不可变的,因此您实际上不会修改值,而是将其分配给 new 字符串。
  • 我同意返回值更容易阅读。如果我需要修改多个变量,我将使用 ref,但这种情况很少见,而且在这些情况下,我通常会修改类属性或将传入具有多个属性的对象。
  • 谢谢,我想这会回答我的问题。我正在尝试编写代码来读取通用对象的字符串参数并删除sql注入并返回相同的对象。
  • 你有没有想过用反射来代替?
猜你喜欢
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 2022-07-21
  • 1970-01-01
相关资源
最近更新 更多