我有一个类有以下方法:
public List<Bike> bikesCopy
{
get
{
List<Bike> bs;
lock (_bikes) bs = new List<Bike>(_bikes);
return bs;
}
}
Run Code Online (Sandbox Code Playgroud)
这是另一个列表的副本, private List<Bike> _bikes;
现在奇怪的是,我收到以下错误:
目标数组不够长.检查destIndex和length,以及数组的下限.
这里有什么问题?
在Java中,在没有初始化的情况下声明类级实例变量会花费内存吗?
例如:int i;如果我没有初始化它,是否使用任何内存i = 5;?
细节:
我有一个巨大的超级类,许多不同的(没有足够的不同,有自己的超类)子类扩展.一些子类不使用超类声明的每个单元.我可以简单地将这些原语保留为未初始化,并仅在必要的子类中初始化它们以节省内存吗?
关闭后我还应该打电话Dispose()给我的插座吗?
例如:
mySocket.Shutdown(SocketShutdown.Both);
mySocket.Close();
mySocket.Dispose(); // Redundant?
Run Code Online (Sandbox Code Playgroud)
我想知道因为MSDN文档说明如下:
关闭Socket连接并释放所有相关资源.
我需要检查一个string位于数据包内的数据包byte.如果我使用BitConverter.ToString(),我得到字节string与破折号(fe:00-50-25-40-A5-FF).
我尝试了一些快速谷歌搜索后找到的大多数函数,但是大多数函数都有输入参数类型string,如果我用string带破折号调用它们,它会抛出异常.
我需要一个函数将十六进制(as string或as byte)转换为string表示十六进制值(fe:0x31 = 1)的函数.如果输入参数是string,则该功能应识别破折号(例如"47-61-74-65-77-61-79-53-65-72-76-65-72"),因为BitConverter无法正确转换.
我试图在Java中创建一个将对数字执行操作的泛型类.在以下示例中,添加如下:
public class Example <T extends Number> {
public T add(T a, T b){
return a + b;
}
}
Run Code Online (Sandbox Code Playgroud)
请原谅我的天真,因为我对Java Generics相对较新.此代码无法编译错误:
对于参数类型T,T,运算符+未定义
我认为通过添加"extends Number",代码将被编译.是否可以执行此Java或是否必须为每种Number类型创建重写方法?
使用表达式成员允许您将方法或属性的主体定义为没有return关键字的单个表达式(如果它返回了某些内容).
例如,它变成了这些
int Method1()
{
return 5;
}
void Method2()
{
Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)
进入这些
int Method1() => 5;
void Method2() => Console.WriteLine();
Run Code Online (Sandbox Code Playgroud)
当您从正文中抛出异常时,会产生差异:
void Method3()
{
throw new Exception();
}
Run Code Online (Sandbox Code Playgroud)
但是,以下内容将无法编译:
void Method3() => throw new Exception();
Run Code Online (Sandbox Code Playgroud)
以下消息:
Warning The member 'Program.Exception()' does not hide an inherited member. The new keyword is not required.
Error 'Program.Exception()' must declare a body because it is not marked abstract, extern, or partial
Error ; expected
Error Invalid token 'throw' in class, struct, or …Run Code Online (Sandbox Code Playgroud) Android文档中的"性能提示"部分有一个非常大胆的主张:
one()是比较快的.它将所有内容都拉到局部变量中,避免了查找.只有阵列长度才能提供性能优势.
它引用此代码段:
int len = localArray.length;
for (int i = 0; i < len; ++i) {
sum += localArray[i].mSplat;
}
Run Code Online (Sandbox Code Playgroud)
这让我感到很惊讶,因为localArray.length只是访问一个整数,如果你使用一个中间变量,你必须再次执行相同的步骤.我们真的在说一个只需要x代替的中间变量y.x更快吗?
我看了一下这个问题是关于同样的想法但是使用了一个arraylist及其后续的.size()方法.这里的共识似乎是没有区别,因为方法调用可能只是内联到整数访问(这正是我们在这里的场景).
所以我接受了字节码,看看是否可以告诉我任何事情.
给出以下源代码:
public void MethodOne() {
int[] arr = new int[5];
for (int i = 0; i < arr.length; i++) { }
}
public void MethodTwo() {
int[] arr = new int[5];
int len = arr.length;
for (int i = 0; i < …Run Code Online (Sandbox Code Playgroud) 有人能告诉我前缀/后缀运算符是如何工作的吗?我一直在网上看很多但没找到任何东西.
从我可以告诉prefex第一个增量,然后执行操作,然后分配.
Postfix将首先执行操作,然后分配然后递增.
但是我的代码遇到了一些麻烦:
int x, y;
x = 1;
y = x + x++; // (After operation y = 2)(x=2)
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时:
y = x++ + x; // (After operation y = 3)(x=2)
Run Code Online (Sandbox Code Playgroud)
我不确定为什么这些操作会有所不同.我有两个问题:
你能解释一下这个区别吗?
这如何适用于其他运营商Prefix?
我正在从父对象创建一个子对象.所以场景是我有一个对象和一个子对象,它为我想要搜索的场景添加了一个距离属性.我选择使用继承,因为我的UI与搜索对象或对象列表等效地工作,而不是位置搜索的结果.所以在这种情况下,继承似乎是一个明智的选择.
目前我需要MyObjectSearch从一个实例生成一个新对象MyObject.目前我通过逐个设置属性手动在构造函数中执行此操作.我可以使用反射,但这会很慢.有没有更好的方法来实现这种对象增强?
希望下面的代码说明了这个场景.
public class MyObject {
// Some properties and a location.
}
public class MyObjectSearch : MyObject {
public double Distance { get; set; }
public MyObjectSearch(MyObject obj) {
base.Prop1 = obj.Prop1;
base.Prop2 = obj.Prop2;
}
}
Run Code Online (Sandbox Code Playgroud)
我的搜索功能:
public List<MyObjectSearch> DoSearch(Location loc) {
var myObjectSearchList = new List<MyObjectSearch>();
foreach (var object in myObjectList) {
var distance = getDistance();
var myObjectSearch = new MyObjectSearch(object);
myObjectSearch.Distance = distance;
myObjectSearchList.add(myObjectSearch);
}
return myObjectSearchList;
Run Code Online (Sandbox Code Playgroud)
}
我正在使用Windows运行时组件进行API调用.直到今天早些时候,我使用了HttpClient相关的模型,System.Net但转而Windows.Web使用WinRT流.
除了将using报表,交换HttpContent到IHttpContent并使用WindowsRuntimeExtensions改变我IInputStream来Stream为JSON.NET,我没有做什么特别的事情.然而,在我的16次测试中突然有3次失败,而之前一切都运转了
所有3个(集成)测试都验证我在使用无效凭据登录时收到错误响应.还有其他测试包括登录(但使用有效的凭据),它们工作得很好.给定的错误消息属于类型AggregateException并具有消息
System.AggregateException:发生一个或多个错误.--->System.Exception:找不到元素.无法显示对话框,因为尚未设置父窗口句柄.
该异常包含HRESULT值.outerexception具有-2146233088与对应0x80131500的innerexception -2147023728对应的值0x80070490.这些都不是MSDN页面上的已知错误代码.
经过调查:
堆栈跟踪:
Result StackTrace:
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at xx.Models.Requests.GetRequest.<ExecuteRequestAsync>d__0.MoveNext() in c:\Users\jeroen\Github\Windows-app\xx\xx\Models\Requests\Request.cs:line 17
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) …Run Code Online (Sandbox Code Playgroud) c# ×7
java ×3
.net ×2
async-await ×1
benchmarking ×1
bitconverter ×1
bytecode ×1
c ×1
c#-6.0 ×1
c++ ×1
dispose ×1
for-loop ×1
hex ×1
inheritance ×1
list ×1
locking ×1
performance ×1
primitive ×1
roslyn ×1
sockets ×1
string ×1