## What is difference between covariance and Contravariance?

# What is difference between covariance and Contravariance?

Table of Contents

## What is difference between covariance and Contravariance?

Covariance permits a method to have a return type that is a subtype of the one defined in the delegate. Contravariance permits a method to have a parameter type that is a base type of the one defined in the delegate type.

**What is covariance in programming?**

Covariance means that a method can return a type that is derived from the delegate’s return type. Contra-variance means that a method can take a parameter that is a base of the delegate’s parameter type.

### Is Java a Contravariant?

Java does not support contravariant arguments in subtyping. Only covariance for what concern method return types (like in the first example).

**What is variance in programming?**

Variance refers to how subtyping between more complex types relates to subtyping between their components.

## What is covariant and Contravariant in C#?

In C#, covariance and contravariance enable implicit reference conversion for array types, delegate types, and generic type arguments. Covariance preserves assignment compatibility and contravariance reverses it.

**Can you be declared as Contravariant?**

A type can be declared contravariant in a generic interface or delegate only if it defines the type of a method’s parameters and not of a method’s return type. In , ref , and out parameters must be invariant, meaning they are neither covariant nor contravariant.

### What is covariance in Java?

Covariance and contravariance for array types In Java, some array types are covariant and/or contravariant. In the case of covariance, this means that if T is compatible to U , then T[] is also compatible to U[] . In the case of contravariance, it means that U[] is compatible to T[] .

**What is type compatibility in Java?**

When you assign a value of one data type to another, the two types might not be compatible with each other. If the data types are compatible, then Java will perform the conversion automatically known as Automatic Type Conversion, and if not then they need to be cast or converted explicitly.

## What is the meaning of contravariant?

Adjective. contravariant (not comparable) (category theory, of a functor) which reverses composition.

**What is Contravariant and covariant in tensor?**

In differential geometry, the components of a vector relative to a basis of the tangent bundle are covariant if they change with the same linear transformation as a change of basis. They are contravariant if they change by the inverse transformation.