在Java中,我们总是可以使用数组来存储对象引用.然后我们有一个ArrayList或HashTable,它可以自动扩展为存储对象.但有没有人知道一种自动扩展的对象引用数组的本地方式?
编辑:我的意思是我想知道Java API是否有一些类能够存储对象的引用(但不存储实际对象,如XXXList或HashTable)和自动扩展的能力.
我正在开发一个asp.net(3.5)应用程序,我对回发的行为感到困惑.
请考虑以下情形:我有一个基本上是表单的Web用户控件.但是,每个表单字段本身都是Web用户控件.
在保存按钮的单击事件中,我遍历表单中的所有控件,并检索字段值和引用我将值保存到的数据库字段的字段名称.
click事件触发回发,并且在回访期间我访问控件,这是有趣的事情:数据库字段的属性值变为null!谁能在这里曝光?
这是一些基本代码:
[Serializable]
public partial class UserProfileForm : CustomIntranetWebappUserControl
{
protected override void OnInit(EventArgs e)
{
//AutoEventWireup is set to false
Load += Page_Load;
CancelLinkButton.Click += CancelButtonClickEvent;
SaveLinkButton.Click += SaveButtonClickEvent;
base.OnInit(e);
}
private void SaveButtonClickEvent(object sender, EventArgs e)
{
VisitFormFields();
}
private void VisitFormFields()
{
var userProfileVisitor = new UserProfileVisitor();
foreach (var control in Controls)
{
if (control is FormFieldUserControl)
{
var formField = (FormFieldUserControl) control;
formField.Visit(userProfileVisitor);
}
}
userProfileVisitor.Save();
}
protected void Page_Load(object sender, EventArgs e) …Run Code Online (Sandbox Code Playgroud) 这可能适用于大多数语言,但我不确定.我是Python的初学者,一直致力于C#和VB中的列表副本.但是在Python中,只要我将列表作为参数传递并通过使用"for i in range"进行枚举,然后更改list参数的值,输入值实际上会更改原始列表.我认为Python应该默认按值传递参数,这样一旦函数完成,我仍然会在调用函数之前得到原始值.我错过了什么?谢谢!
我正在尝试将WPF颜色选择器的控件模板设置为矩形.我希望只显示一个矩形形状来代替ColorPicker ComboBox.但是当我在ControlTemplate中放置任何控件时,我得到的错误是"对象引用未设置为对象的实例".
这是我的wpf代码:
<wpfx:ColorPicker Name="ColorPicker1" Height="30" DisplayColorAndName="False"
Margin="29,72,366,209"
SelectedColorChanged="ColorPicker1_SelectedColorChanged">
<wpfx:ColorPicker.Template>
<ControlTemplate>
<Rectangle ></Rectangle>
</ControlTemplate>
</wpfx:ColorPicker.Template>
</wpfx:ColorPicker>
Run Code Online (Sandbox Code Playgroud)
对我做错了什么的建议?
我试过这个,但我的问题可能是我不知道描述问题的正确术语.
我有一个C#表单,有许多文本框对象.
在某些情况下,我按顺序处理每个文本框的内容,如下所示:
tbxStressCmd1.BackColor = Color.Salmon;
processCmd(tbxStressCmd1.Text);
System.Threading.Thread.Sleep( tbxStressWait1.text );
tbxStressCmd1.BackColor = Color.White;
tbxStressCmd2.BackColor = Color.Salmon;
processCmd(tbxStressCmd2.Text);
System.Threading.Thread.Sleep( tbxStressWait2.text );
tbxStressCmd1.BackColor = Color.White;
.
tbxStressCmd9.BackColor = Color.Salmon;
processCmd(tbxStressCmd9.Text);
System.Threading.Thread.Sleep( tbxStressWait9.text );
tbxStressCmd9.BackColor = Color.White;
Run Code Online (Sandbox Code Playgroud)
我想避免重复,并有类似的东西:
// Pseudo Code
runCmd ( object tbxCmd, object tbxWait )
{
tbxCmd.BackColor = Color.Salmon;
processCmd(tbxCmd.Text);
System.Threading.Thread.Sleep( tbxWait.text );
tbxCmd.BackColor = Color.White;
}
Run Code Online (Sandbox Code Playgroud)
然后:
runCmd( tbxStressCmd1, tbxStressWait1 );
.
.
runCmd( tbxStressCmd9, tbxStressWait9 );
Run Code Online (Sandbox Code Playgroud)
引用文本框对象的正确方法是什么,以便它们可以传递给函数并在上面的伪代码中使用?
我想Control.Tag用我的自定义对象设置Winforms 属性,ButtonMetaData然后访问ButtonMetaData使用Control.Tag属性的属性.应该工作,因为Tag属性被定义为一个对象,对吗?见图1.
但是,为了访问属性ButtonMetaData,我不得不将Tag对象分配给中间对象变量(x在我的示例中)以访问ButtonMetaData属性.当我尝试使用已转换为的Tag对象访问它们时ButtonMetaData,编译器会抱怨.见图2.
为什么我不能直接访问ButtonMetaData使用已转换为的Tag对象的属性ButtonMetaData?
图1
图2
public class ButtonMetaData
{
public bool clickedByUser;
public bool clickedProgramatically;
public ButtonMetaData(bool clickedByUser, bool clickedProgramatically)
{
this.clickedByUser = clickedByUser;
this.clickedProgramatically = clickedProgramatically;
}
}
private void Button1_Click(object sender, EventArgs e)
{
Button button = (Button)sender;
button.Tag = new ButtonMetaData(clickedByUser: true, clickedProgramatically: false);
//BUILDS OK
ButtonMetaData x = (ButtonMetaData)button.Tag;
Console.WriteLine(x.clickedByUser);
Console.WriteLine(x.clickedProgramatically);
//BUILDS OK
//DOESN'T BUILD …Run Code Online (Sandbox Code Playgroud) 如何获取 Kotlin 对象的引用名称?假设我有一个对象,我怎样才能得到,比如说,com.myapp.CustomClass@6406?我的问题与如何通过名称获取对 Kotlin 对象的引用相反?
在此代码上获取此错误:
string pname = null;
pname = ag.FirstOrDefault().arrangement.parent.name;
Run Code Online (Sandbox Code Playgroud)
当调用行pname = ag.FirstOrDefault .....
提交的parent.name为空(null),这很好我想在这种情况下得到一个空(null)字符串.我该如何摆脱错误?
是否有可能定义一个函数,它将使参数在返回后引用另一个(已存在的)对象而不使用指针等?同样,这不能仅通过使用复制构造函数或赋值运算符或任何东西来更改现有对象.当函数返回时,外部对象将引用不同的内存块.
例如:
int x;
void change(int& blah) {
blah = x; // I don't want to change blah's value to x's value, I want to make blah refer to x outside the function
}
void main() {
int something = 0;
change(something);
assert(&x == &something);
}
Run Code Online (Sandbox Code Playgroud)
无论使用何种方法,都必须调用该函数
change(x);
Run Code Online (Sandbox Code Playgroud)
在调用函数之前,不对参数应用任何特殊的运算符或函数.我不知道这是否可行,但如果是这样的话,它会变得非常酷.如果不是,我也想知道原因.
比方说,我们想要反转一个数组,就像这个函数一样。
对于两个元素的每次交换,都会进行复制构造函数、析构函数和两个复制赋值。
template<class T>
void Reverse(T *arr, int size)
{
T *leftItem = arr;
T *rightItem = &arr[size - 1];
for (int i = 0; i < size / 2; i++, leftItem++, rightItem--)
{
T swap = *leftItem; // Copy constructor
*leftItem = *rightItem; // Copy assignment
*rightItem = swap; // Copy assignment
} // Destructor
}
Run Code Online (Sandbox Code Playgroud)
这看起来很可怕。所以我想出了一个想法,但我不确定它是好还是坏,因为我实际上在这里安全地绕过了所有类型和约定。
但另一方面,它避免了复制操作,根据类型的不同,复制操作可能会很繁重。
template<class T>
void ReverseUsingMemcpy(T *arr, int size)
{
char *swap = new char[sizeof(T)];
T …Run Code Online (Sandbox Code Playgroud) object-reference ×10
c# ×3
c++ ×2
arrays ×1
asp.net ×1
color-picker ×1
constructor ×1
exception ×1
java ×1
kotlin ×1
postback ×1
python ×1
reference ×1
winforms ×1
wpf ×1