在变量范围方面,C#非常适合挑选.它怎么可能接受这个代码:
class Program
{
int x = 0;
void foo()
{
int x = 0;
x = 1;
Console.WriteLine(x);
}
}
Run Code Online (Sandbox Code Playgroud)
如果你问我,这是一个明显的命名冲突.编译器(VS 2010)仍然接受它.为什么?
在Android中,您可以下载使用文件org.apache.http类HttpClient,HttpGet和HttpResponse.如何从HTTP请求中读取建议的文件名?
例如在PHP中,你会这样做:
header('Content-Disposition: attachment; filename=blah.txt');
Run Code Online (Sandbox Code Playgroud)
如何使用Android/Java中的Apache类获取"blah.txt"?
android http-get httpresponse httpclient content-disposition
我有一个System.Windows.Forms.PropertyGrid不同类型的价值观.对于特定项目,我想显示可供选择的有用值列表.用户还可以键入新值.类似于传统下拉组合框的东西:

到目前为止,我有自己的System.ComponentModel.TypeConverter,但我无法弄清楚如何获得建议值的下拉列表和直接编辑值的可能性.请帮忙!
我想使用另一个位图作为掩码绘制位图.掩码是一个黑色位图,其中包含透明对象.我希望这个透明部分填充任意颜色并添加到我的原始图像.如何才能做到这一点?



在Android 4.3上测试过.我有两个应用程序,com.my.app.first和com.my.app.second.在我的活动中,我想阅读其他应用程序的首选项.我选择为我的两个应用使用相同的用户ID:
android:sharedUserId="com.my.app"
我总是这样加载我的偏好:
prefs = getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)
现在,在我的第二个应用中,我执行以下操作:
try {
Context context = createPackageContext("com.my.app.first", Context.CONTEXT_IGNORE_SECURITY);
// context.getPackageName() does indeed return "com.my.app.first"
// Note: Context.MODE_WORLD_READABLE makes no difference here!
prefs = context.getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
}
Run Code Online (Sandbox Code Playgroud)
prefs.mFile错误地指向/data/data/com.my.app.second/shared_prefs/MyAppPreferences.xml.
显然,即使我使用了其他应用程序的上下文,对getSharedPreferences的调用也会返回当前应用程序的首选项.我究竟做错了什么?请帮忙!
Android P使用androidx 1.0.0(minSdkVersion 17)运行。从我MainActivity打开我的PreferenceActivity。在那里,我更改了UI主题,还重新创建了活动以获取更改:
AppCompatDelegate.setDefaultNightMode(nightMode);
recreate();
Run Code Online (Sandbox Code Playgroud)
更新主题后,我返回MainActivity。在那里,主题已成功更新。然后,我重新打开PreferenceActivity并再次更改主题。
到目前为止,一切都很好!
最后,我MainActivity再次回到。会议的主题是不更新,如果你重复这些步骤也不会更新!
因此,重现步骤似乎是:
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES)和recreate()。主题已更新!AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO)和recreate()。主题已更新!我打过电话recreate()从returing时PreferenceActivity而是产生另一个问题,当库并在主题的变化作出反应:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (...) {
recreate();
} else {
super.onActivityResult(requestCode, resultCode, data);
} …Run Code Online (Sandbox Code Playgroud) 我开发了一款Android应用程序,我希望它既可以免费也可以付费.什么是最好的方法?
我可以想到三个解决方案:
问:哪种解决方案最好?为什么?
有些事情需要考虑:
我有一个缓慢的数据源,所以我异步创建它.此外,我的viewmodel的许多属性本身都很慢.因此,我也使它们异步(绑定到Telerik属性网格):
<Grid>
<Grid.DataContext>
<ObjectDataProvider ObjectType="{x:Type viewModels:MyViewModel}"
IsAsynchronous="True" x:Name="myViewModel" />
</Grid.DataContext>
<telerik:RadPropertyGrid x:Name="settings" Item="{Binding IsAsync=True}">
<telerik:RadPropertyGrid.PropertyDefinitions>
<telerik:PropertyDefinition
Binding="{Binding Path=SlowProperty,IsAsync=True,Mode=TwoWay}" />
</telerik:RadPropertyGrid.PropertyDefinitions>
</telerik:RadPropertyGrid>
</Grid>
Run Code Online (Sandbox Code Playgroud)
在调试时,我可以看到数据源确实在另一个线程中创建,因此不会阻止UI.但是,当我进入SlowProperty调试器时,我发现我仍然在主线程中 - 这可以通过UI挂起直到属性返回来证明.
问:我在这里错过了什么?IsAsync异步属性是不够的?
编辑:这似乎适用于正常情况TextBlock.IsAsync行为是否依赖于控件的实现?(在这种情况下,我怀疑属性网格中存在错误.)
在我的WPF(4.0)应用程序中,我正在使用Viewmodel-first模式.因此,首先创建我的视图模型,然后使用数据模板创建视图.可以在这里找到工作演示.
现在,从创建的视图(代码隐藏)中,我需要修改viewmodel的属性.在一种View-first方法中,我只是访问一个命名的viewmodel实例.但是,该Viewmodel-first方法不允许这样做.有一个视图模型,但视图并不关心它是什么.
当然你可以掌握DataContext并使用它,但这有效地结合了视图和视图模型.
private void MyView_Loaded(object sender, RoutedEventArgs e)
{
this.viewModel = DataContext as MyViewModel;
}
Run Code Online (Sandbox Code Playgroud)
必须有一个推荐的模式.命令?消息?请帮忙!
问:如何修改(设置属性)活动视图模型?
事务可以在SQL Server客户端或服务器代码中执行。一位数据库专家曾经告诉我,由于锁定问题,应该避免客户端事务。现在,几年后,我想知道这是否仍然成立。
当然,在某些情况下客户端事务是必要的,但我们假设可以使用客户端或服务器端事务来解决特定问题。
就性能而言,这两种技术哪一种最好?为什么?
C#(客户端):
using (var transaction = new TransactionScope())
{
// Insert data into database.
transaction.Complete();
}
Run Code Online (Sandbox Code Playgroud)
T-SQL(服务器):
CREATE PROCEDURE [dbo].[my_proc]
AS
BEGIN
SET NOCOUNT ON
DECLARE @TransactionCount [int]
BEGIN TRY
SET @TransactionCount = @@TRANCOUNT
IF @TransactionCount = 0
BEGIN TRANSACTION
-- Insert data
IF @TransactionCount = 0
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0 AND @TransactionCount = 0
ROLLBACK TRANSACTION
; THROW
END CATCH
END
GO
Run Code Online (Sandbox Code Playgroud) android ×5
c# ×3
mvvm ×2
viewmodel ×2
wpf ×2
.net ×1
androidx ×1
asynchronous ×1
http-get ×1
httpclient ×1
httpresponse ×1
mask ×1
porter-duff ×1
propertygrid ×1
scope ×1
sql-server ×1
transactions ×1
version ×1
xaml ×1