我有一个Public Class"General",其中是Public Sub"updateDynamics".当我尝试在代码隐藏中引用它时,如下所示:
updateDynamics(get_prospect.dynamicsID)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
对非共享成员的引用需要对象引用
确定对象引用变量的最佳方法是null什么?
是以下吗?
MyObject myObjVar = null;
if (myObjVar == null)
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud) 我遇到了一些像这样的MC++代码:
__gc class ClassA
{
Puclic:
ClassB GetClassB();
}
__gc class ClassB
{
Public:
int Value;
}
int main()
{
ClassA^ a = gcnew ClassA();
ClassB^ b = a->GetClassB();
int c = b->Value;
}
Run Code Online (Sandbox Code Playgroud)
在访问其值之前检查b是否为NULL不重要吗?我试过了if(b == NULL),但它不起作用.
或者它真的没有必要进行检查?但我简直不敢相信......
PS:我只想知道"参考"本身在这里是否为NULL.B类的内容是否为空并不重要.
我很想知道C#对象引用如何在运行时(在.NET CLR中)在内存中表示.想到的一些问题是:
对象引用占用多少内存?在类的范围和方法的范围中定义时它是否不同?根据此范围(堆栈与堆),它所在的位置是否不同?
对象引用中维护的实际数据是什么?它只是一个指向它引用的对象的内存地址还是更多的内存地址?这是否根据是否在类或方法的范围内定义而有所不同?
与上面相同的问题,但这次是在谈论对引用的引用时,例如在通过引用将对象引用传递给方法时.1和2的答案如何变化?
我有一个Employee对象,我正在尝试使用单个数据库实体上下文使用多任务(并行执行)更新记录(即更新/删除).但我得到以下例外
Message ="对象引用未设置为对象的实例."
考虑以下DTO
public class Employee
{
public int EmployeeId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<ContactPhone> ContactPhoneNumbers { get; set; }
public List<ContactEmail> ContactEmailAddress { get; set; }
}
public class ContactPhone
{
public int ContactId { get; set; }
public string Type { get; set; }
public string Number { get; set; }
}
public class ContactEmail
{
public int ContactId { …Run Code Online (Sandbox Code Playgroud) c# entity-framework task object-reference task-parallel-library
在Java9中,终结器已经被弃用,并且已经引入了新的清洁器概念.它的具体原因是什么?是否有任何特定的场景或理由,清洁剂应优先于终结者(假设不推荐使用它们).
标准的12.2.5部分说:
在函数调用(5.2.2)中与引用参数的临时绑定将持续存在,直到包含该调用的完整表达式完成为止.函数返回语句(6.6.3)中返回值的临时绑定将一直存在,直到函数退出.在所有这些情况下,在初始化引用的表达式的求值期间创建的临时值,除了引用所绑定的临时值之外,在创建它们的完整表达式的末尾以及与它们相反的顺序被销毁.完成他们的建设.
我试着理解的代码是:
#include <iostream>
const int& foo(const int& fooRef)
{
return fooRef;
} // #0
int main (void)
{
const int& numberRef = foo(5); // #1
std::cout << numberRef; // #2
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在线#1创建临时对象并绑定到fooRef参数foo.fooRef在线销毁#0.所以我认为临时应该在这里销毁,因为生命延长不是传递性的.
问题:
什么until the function exits意思?这是untill it finished executing什么意思?
为什么我得到一个5输出.临时对象是否仍然存在#2?
如何解释标准引用以弄清楚此示例的工作原理?
将非常感谢参考标准的逐步原子演练.谢谢!
PS 这里接受的答案也告诉代码是broken,我没有得到,为什么我得到这样的程序输出.
我的存储库有List<Student>,List<Course>并且List<Enrolment>注册有Enrolment.Student和Enrolment.Course,它们是前两个列表中的学生或课程之一.
当我在我的存储库中使用XmlSerializer时,它会输出冗余数据,因为它会对每个学生的所有属性进行序列化,List<Student>然后再对每个对这些学生的参考进行序列化List<Enrolment>.我正在寻找一种优雅的方法来解决这个问题.
反序列化后,我可以使用反序列化创建的重复对象实例中的ID值来修复引用,但这似乎是hackish.
修复冗余输出的一种方法是XmlIgnore Enrolment.Student和Enrolment.Course,并为序列化创建另外两个属性 - Enrolment.StudentID和Enrolment.CourseID.但是,在反序列化期间,由于反序列化的结果List<Student>和List<Course>不可用,因此无法设置Enrolment.Student和Enrolment.Course的引用(AFAIK).
我想到的另一种方法是在我的对象层次结构中向下排序,分别执行每个列表并控制反序列化的顺序 - 我宁愿不这样做.
另一种方法是XmlIgnore List<Enrolment>并创建一个注册序列化助手类,List<Enrolment>在其自身的反序列化完成后进行初始化.这似乎付出了很多努力.
其他人如何使用XmlSerializer序列化/反序列化对同一对象的多个引用?
我相信AutoMapper在将对象列表从一种类型映射到另一种类型时使用缓存.看看下面的代码:
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.SomeOtherNumber, opt => opt.Ignore());
Mapper.AssertConfigurationIsValid();
var sourceList = new List<Source>();
var s1 = new Source {SomeNumber = 10};
var s2 = new Source {SomeNumber = 69};
sourceList.Add(s1);
sourceList.Add(s1);
sourceList.Add(s1);
sourceList.Add(s2);
var destList = Mapper.Map<List<Source>, List<Destination>>(sourceList);
destList[0].SomeOtherNumber = 100;
destList.ForEach(x => Console.WriteLine("SomeNumber: {0}, SomeOtherNumber: {1}", x.SomeNumber, x.SomeOtherNumber));
Console.ReadLine();
}
}
public class Source
{
public int SomeNumber { get; set; }
}
public class Destination …Run Code Online (Sandbox Code Playgroud) 在C#中,当我有两个对象obj1时,由a组成的obj2List<string>和我将这两个对象分配给同一个List<string>对象.
如果我对obj1的引用超出范围但我对obj2的引用没有,obj1是否仍然有资格进行垃圾回收,或者是否存在一些依赖性问题,因为仍然存在对该List<string>对象的引用?
object-reference ×10
c# ×5
.net ×3
automapper ×1
c++ ×1
c++-cli ×1
clr ×1
finalize ×1
java ×1
java-9 ×1
lifetime ×1
managed-c++ ×1
memory ×1
null ×1
object ×1
reference ×1
task ×1
vb.net ×1
visual-c++ ×1
xml ×1