我理解如果我传递一个值类型(int,struct等)作为参数(没有ref关键字),该变量的副本将传递给该方法,但如果我使用该ref关键字,则传递对该变量的引用,不是新的.
但是使用引用类型(如类),即使没有ref关键字,也会将引用传递给方法,而不是副本.那么ref关键字与引用类型的用途是什么?
举个例子:
var x = new Foo();
Run Code Online (Sandbox Code Playgroud)
以下有什么区别?
void Bar(Foo y) {
y.Name = "2";
}
Run Code Online (Sandbox Code Playgroud)
和
void Bar(ref Foo y) {
y.Name = "2";
}
Run Code Online (Sandbox Code Playgroud) 在C#中,您可以对通用方法设置约束,例如:
public class A {
public static void Method<T> (T a) where T : new() {
//...do something...
}
}
Run Code Online (Sandbox Code Playgroud)
您指定的T应该具有不需要参数的构造函数.我想知道是否有办法添加一个约束,如" 存在一个带float[,]参数的构造函数? "
以下代码无法编译:
public class A {
public static void Method<T> (T a) where T : new(float[,] u) {
//...do something...
}
}
Run Code Online (Sandbox Code Playgroud)
解决方法也有用吗?
在Windows中,如何访问运行批处理文件时传递的参数?
例如,假设我有一个名为的程序hello.bat.当我进入hello -aWindows命令行时,如何让我的程序知道-a作为参数传递?
我在列表中设置了类似于下面的URL
我已设法使用以下代码获取查询字符串:
myurl = longurl.Split('?');
NameValueCollection qs = HttpUtility.ParseQueryString(myurl [1]);
foreach (string lol in qs)
{
// results will return
}
Run Code Online (Sandbox Code Playgroud)
但它只返回基于提供的URL的id,server,location等参数 .
我需要的是添加/追加现有查询字符串的值.
例如,使用URL:
http://somesite.com/backup/index.php?action=login&attempts=1
我需要更改查询字符串参数的值:
行动= login1
尝试= 11
如您所见,我为每个值附加了"1".我需要从包含不同查询字符串的字符串中获取一组URL,并在最后为每个参数添加一个值,然后再将它们添加到列表中.
我面临的问题是在两个状态之间传递数据而不暴露网址中的数据,就像用户不能真正直接落在这种状态上一样.
例如.我有两个状态"A"和"B".我正在状态"A"中进行一些服务器调用,并将调用的响应传递给状态"B".服务器调用的响应是一个字符串消息,这很长,所以我不能在url中公开它.
那么在角度ui路由器中有没有办法在状态之间传递数据,而不使用url params?
是否可以在不使用typedef的情况下在Objective-C中指定方法块参数?它必须像函数指针一样,但是如果不使用中间的typedef,我就无法获得胜利的语法:
typedef BOOL (^PredicateBlock_t)(int);
- (void) myMethodTakingPredicate:(PredicateBlock_t)predicate
Run Code Online (Sandbox Code Playgroud)
只有以上编译,所有这些都失败了:
- (void) myMethodTakingPredicate:( BOOL(^block)(int) ) predicate
- (void) myMethodTakingPredicate:BOOL (^predicate)(int)
Run Code Online (Sandbox Code Playgroud)
我不记得我尝试过的其他组合.
在Java中传递-D参数时,编写命令行然后从代码中访问它的正确方法是什么?
例如,我试过写这样的东西......
if (System.getProperty("test").equalsIgnoreCase("true"))
{
//Do something
}
Run Code Online (Sandbox Code Playgroud)
然后像这样称呼它......
java -jar myApplication.jar -Dtest="true"
Run Code Online (Sandbox Code Playgroud)
但是我收到了NullPointerException.我究竟做错了什么?
每当网页加载时我都会调用PHP脚本.但是,有一个PHP脚本需要运行的参数(我通常在测试脚本时通过命令行).
每次在页面加载时运行脚本时,如何传递此参数?
在浏览一些源代码时,我遇到了这样的函数:
void someFunction(char someArray[static 100])
{
// do something cool here
}
Run Code Online (Sandbox Code Playgroud)
通过一些实验,似乎其他限定符也可能出现在那里:
void someFunction(char someArray[const])
{
// do something cool here
}
Run Code Online (Sandbox Code Playgroud)
似乎只有[ ]在将数组声明为函数的参数时才允许使用限定符.这些怎么办?为什么功能参数不同?
我理解PHP没有纯对象变量,但我想检查一个属性是否在给定的对象或类中.
$ob = (object) array('a' => 1, 'b' => 12);
Run Code Online (Sandbox Code Playgroud)
要么
$ob = new stdClass;
$ob->a = 1;
$ob->b = 2;
Run Code Online (Sandbox Code Playgroud)
在JS中,我可以编写它来检查a对象中是否存在变量:
if ('a' in ob)
Run Code Online (Sandbox Code Playgroud)
在PHP中,可以做这样的事吗?
非常感谢您的建议.
parameters ×10
c# ×3
php ×2
angularjs ×1
arguments ×1
arrays ×1
batch-file ×1
c ×1
class ×1
cmd ×1
command-line ×1
constructor ×1
generics ×1
java ×1
object ×1
objective-c ×1
query-string ×1
state ×1
static ×1
variables ×1
windows ×1